@shepai/cli 1.150.0 → 1.150.1-pr441.b309db7
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 +5 -0
- package/apis/json-schema/NotificationEventConfig.yaml +15 -0
- package/apis/json-schema/NotificationEventType.yaml +3 -0
- package/apis/json-schema/ScheduledWorkflow.yaml +46 -0
- package/apis/json-schema/WorkflowExecution.yaml +38 -0
- package/apis/json-schema/WorkflowExecutionStatus.yaml +10 -0
- package/apis/json-schema/WorkflowTriggerType.yaml +7 -0
- package/dist/packages/core/src/application/ports/output/repositories/index.d.ts +2 -0
- package/dist/packages/core/src/application/ports/output/repositories/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/repositories/workflow-execution-repository.interface.d.ts +66 -0
- package/dist/packages/core/src/application/ports/output/repositories/workflow-execution-repository.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/repositories/workflow-execution-repository.interface.js +11 -0
- package/dist/packages/core/src/application/ports/output/repositories/workflow-repository.interface.d.ts +81 -0
- package/dist/packages/core/src/application/ports/output/repositories/workflow-repository.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/repositories/workflow-repository.interface.js +11 -0
- package/dist/packages/core/src/application/ports/output/services/clock.interface.d.ts +28 -0
- package/dist/packages/core/src/application/ports/output/services/clock.interface.d.ts.map +1 -0
- package/dist/packages/core/src/application/ports/output/services/clock.interface.js +13 -0
- package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -0
- package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/workflows/create-workflow.use-case.d.ts +28 -0
- package/dist/packages/core/src/application/use-cases/workflows/create-workflow.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/workflows/create-workflow.use-case.js +72 -0
- package/dist/packages/core/src/application/use-cases/workflows/cron-helpers.d.ts +27 -0
- package/dist/packages/core/src/application/use-cases/workflows/cron-helpers.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/workflows/cron-helpers.js +43 -0
- package/dist/packages/core/src/application/use-cases/workflows/delete-workflow.use-case.d.ts +18 -0
- package/dist/packages/core/src/application/use-cases/workflows/delete-workflow.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/workflows/delete-workflow.use-case.js +64 -0
- package/dist/packages/core/src/application/use-cases/workflows/get-workflow-history.use-case.d.ts +16 -0
- package/dist/packages/core/src/application/use-cases/workflows/get-workflow-history.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/workflows/get-workflow-history.use-case.js +46 -0
- package/dist/packages/core/src/application/use-cases/workflows/get-workflow.use-case.d.ts +13 -0
- package/dist/packages/core/src/application/use-cases/workflows/get-workflow.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/workflows/get-workflow.use-case.js +42 -0
- package/dist/packages/core/src/application/use-cases/workflows/list-workflows.use-case.d.ts +13 -0
- package/dist/packages/core/src/application/use-cases/workflows/list-workflows.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/workflows/list-workflows.use-case.js +33 -0
- package/dist/packages/core/src/application/use-cases/workflows/run-workflow.use-case.d.ts +19 -0
- package/dist/packages/core/src/application/use-cases/workflows/run-workflow.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/workflows/run-workflow.use-case.js +62 -0
- package/dist/packages/core/src/application/use-cases/workflows/schedule-workflow.use-case.d.ts +22 -0
- package/dist/packages/core/src/application/use-cases/workflows/schedule-workflow.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/workflows/schedule-workflow.use-case.js +73 -0
- package/dist/packages/core/src/application/use-cases/workflows/templates/branch-rebase.template.d.ts +9 -0
- package/dist/packages/core/src/application/use-cases/workflows/templates/branch-rebase.template.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/workflows/templates/branch-rebase.template.js +27 -0
- package/dist/packages/core/src/application/use-cases/workflows/templates/issue-triage.template.d.ts +11 -0
- package/dist/packages/core/src/application/use-cases/workflows/templates/issue-triage.template.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/workflows/templates/issue-triage.template.js +27 -0
- package/dist/packages/core/src/application/use-cases/workflows/toggle-workflow.use-case.d.ts +16 -0
- package/dist/packages/core/src/application/use-cases/workflows/toggle-workflow.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/workflows/toggle-workflow.use-case.js +60 -0
- package/dist/packages/core/src/application/use-cases/workflows/update-workflow.use-case.d.ts +25 -0
- package/dist/packages/core/src/application/use-cases/workflows/update-workflow.use-case.d.ts.map +1 -0
- package/dist/packages/core/src/application/use-cases/workflows/update-workflow.use-case.js +83 -0
- 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 +4 -0
- package/dist/packages/core/src/domain/generated/output.d.ts +114 -1
- package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
- package/dist/packages/core/src/domain/generated/output.js +16 -0
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +66 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +4 -0
- 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 +8 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow-execution.mapper.d.ts +46 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow-execution.mapper.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow-execution.mapper.js +57 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow.mapper.d.ts +51 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow.mapper.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow.mapper.js +71 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-workflow-notification-events.d.ts +12 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-workflow-notification-events.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-workflow-notification-events.js +22 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-scheduled-workflows.d.ts +14 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-scheduled-workflows.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-scheduled-workflows.js +65 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-feature-flag-scheduled-workflows.d.ts +11 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-feature-flag-scheduled-workflows.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-feature-flag-scheduled-workflows.js +17 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow-execution.repository.d.ts +24 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow-execution.repository.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow-execution.repository.js +92 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow.repository.d.ts +26 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow.repository.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow.repository.js +117 -0
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js +2 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +11 -42
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.js +2 -3
- package/dist/packages/core/src/infrastructure/services/clock.d.ts +11 -0
- package/dist/packages/core/src/infrastructure/services/clock.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/clock.js +22 -0
- 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 +3 -0
- package/dist/packages/core/src/infrastructure/services/workflow-scheduler/workflow-scheduler.service.d.ts +69 -0
- package/dist/packages/core/src/infrastructure/services/workflow-scheduler/workflow-scheduler.service.d.ts.map +1 -0
- package/dist/packages/core/src/infrastructure/services/workflow-scheduler/workflow-scheduler.service.js +270 -0
- package/dist/src/presentation/cli/commands/_serve.command.d.ts.map +1 -1
- package/dist/src/presentation/cli/commands/_serve.command.js +14 -0
- package/dist/src/presentation/cli/commands/workflow/create.command.d.ts +13 -0
- package/dist/src/presentation/cli/commands/workflow/create.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/workflow/create.command.js +83 -0
- package/dist/src/presentation/cli/commands/workflow/delete.command.d.ts +13 -0
- package/dist/src/presentation/cli/commands/workflow/delete.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/workflow/delete.command.js +50 -0
- package/dist/src/presentation/cli/commands/workflow/disable.command.d.ts +11 -0
- package/dist/src/presentation/cli/commands/workflow/disable.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/workflow/disable.command.js +32 -0
- package/dist/src/presentation/cli/commands/workflow/enable.command.d.ts +11 -0
- package/dist/src/presentation/cli/commands/workflow/enable.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/workflow/enable.command.js +35 -0
- package/dist/src/presentation/cli/commands/workflow/format-helpers.d.ts +35 -0
- package/dist/src/presentation/cli/commands/workflow/format-helpers.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/workflow/format-helpers.js +89 -0
- package/dist/src/presentation/cli/commands/workflow/history.command.d.ts +12 -0
- package/dist/src/presentation/cli/commands/workflow/history.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/workflow/history.command.js +46 -0
- package/dist/src/presentation/cli/commands/workflow/index.d.ts +26 -0
- package/dist/src/presentation/cli/commands/workflow/index.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/workflow/index.js +48 -0
- package/dist/src/presentation/cli/commands/workflow/list.command.d.ts +11 -0
- package/dist/src/presentation/cli/commands/workflow/list.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/workflow/list.command.js +52 -0
- package/dist/src/presentation/cli/commands/workflow/run.command.d.ts +11 -0
- package/dist/src/presentation/cli/commands/workflow/run.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/workflow/run.command.js +37 -0
- package/dist/src/presentation/cli/commands/workflow/schedule.command.d.ts +13 -0
- package/dist/src/presentation/cli/commands/workflow/schedule.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/workflow/schedule.command.js +76 -0
- package/dist/src/presentation/cli/commands/workflow/show.command.d.ts +11 -0
- package/dist/src/presentation/cli/commands/workflow/show.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/workflow/show.command.js +93 -0
- package/dist/src/presentation/cli/commands/workflow/update.command.d.ts +13 -0
- package/dist/src/presentation/cli/commands/workflow/update.command.d.ts.map +1 -0
- package/dist/src/presentation/cli/commands/workflow/update.command.js +67 -0
- package/dist/src/presentation/cli/index.js +2 -0
- package/dist/src/presentation/web/app/actions/get-workflow-history.d.ts +7 -0
- package/dist/src/presentation/web/app/actions/get-workflow-history.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/get-workflow-history.js +17 -0
- package/dist/src/presentation/web/app/actions/list-workflows.d.ts +7 -0
- package/dist/src/presentation/web/app/actions/list-workflows.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/list-workflows.js +17 -0
- package/dist/src/presentation/web/app/actions/toggle-workflow.d.ts +8 -0
- package/dist/src/presentation/web/app/actions/toggle-workflow.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/toggle-workflow.js +19 -0
- package/dist/src/presentation/web/app/actions/trigger-workflow.d.ts +8 -0
- package/dist/src/presentation/web/app/actions/trigger-workflow.d.ts.map +1 -0
- package/dist/src/presentation/web/app/actions/trigger-workflow.js +19 -0
- package/dist/src/presentation/web/app/workflows/page.d.ts +4 -0
- package/dist/src/presentation/web/app/workflows/page.d.ts.map +1 -0
- package/dist/src/presentation/web/app/workflows/page.js +18 -0
- 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 +4 -0
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.js +1 -0
- 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 +3 -0
- 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 +3 -0
- 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 +6 -1
- 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 +6 -0
- 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 +19 -2
- 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 +1 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.d.ts +7 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.js +84 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.stories.d.ts +11 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-execution-history.stories.js +104 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-list-item.d.ts +8 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-list-item.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-list-item.js +68 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-list-item.stories.d.ts +11 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-list-item.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-list-item.stories.js +89 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-list.d.ts +8 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-list.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-list.js +10 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-list.stories.d.ts +11 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-list.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/workflows/workflow-list.stories.js +90 -0
- package/dist/src/presentation/web/components/features/workflows/workflows-page-client.d.ts +6 -0
- package/dist/src/presentation/web/components/features/workflows/workflows-page-client.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/workflows/workflows-page-client.js +14 -0
- package/dist/src/presentation/web/components/features/workflows/workflows-page-client.stories.d.ts +10 -0
- package/dist/src/presentation/web/components/features/workflows/workflows-page-client.stories.d.ts.map +1 -0
- package/dist/src/presentation/web/components/features/workflows/workflows-page-client.stories.js +70 -0
- 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 +1 -0
- package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/feature-flags-context.js +1 -0
- package/dist/src/presentation/web/lib/feature-flags.d.ts +2 -0
- package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
- package/dist/src/presentation/web/lib/feature-flags.js +5 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/app-path-routes-manifest.json +2 -1
- 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 +3 -3
- package/web/.next/required-server-files.json +3 -3
- package/web/.next/routes-manifest.json +6 -0
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +2 -2
- 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 +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -2
- 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 +36 -36
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
- 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 +36 -36
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
- 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 +26 -26
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -2
- 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 +28 -28
- package/web/.next/server/app/(dashboard)/create/page.js +2 -2
- 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 +36 -36
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -2
- 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 +36 -36
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -2
- 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 +26 -26
- package/web/.next/server/app/(dashboard)/page.js +2 -2
- 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 +26 -26
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -2
- 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/page.js +1 -1
- package/web/.next/server/app/_global-error/page.js.nft.json +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 +1 -1
- 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/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 +3 -3
- 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 +2 -2
- 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 +2 -2
- 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 +1 -1
- 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/workflows/page/app-paths-manifest.json +3 -0
- package/web/.next/server/app/workflows/page/build-manifest.json +18 -0
- package/web/.next/server/app/workflows/page/next-font-manifest.json +6 -0
- package/web/.next/server/app/workflows/page/react-loadable-manifest.json +8 -0
- package/web/.next/server/app/workflows/page/server-reference-manifest.json +110 -0
- package/web/.next/server/app/workflows/page.js +19 -0
- package/web/.next/server/app/workflows/page.js.map +5 -0
- package/web/.next/server/app/workflows/page.js.nft.json +1 -0
- package/web/.next/server/app/workflows/page_client-reference-manifest.js +2 -0
- package/web/.next/server/app-paths-manifest.json +2 -1
- 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]__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/{_6256a985._.js → 403f9_next_8a33ddee._.js} +2 -2
- package/web/.next/server/chunks/ssr/403f9_next_8a33ddee._.js.map +1 -0
- 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_0c7787d0._.js +3 -0
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_0c7787d0._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__082758f6._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__082758f6._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__d1040bd1._.js → [root-of-the-server]__090f24cb._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__d1040bd1._.js.map → [root-of-the-server]__090f24cb._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__32cd6108._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__32cd6108._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- 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]__44358910._.js +4 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__44358910._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__3ef34e4c._.js → [root-of-the-server]__57e0ee34._.js} +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__57e0ee34._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__efeeaed4._.js → [root-of-the-server]__7aa484f5._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__efeeaed4._.js.map → [root-of-the-server]__7aa484f5._.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]__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]__c094882b._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__0b150ddf._.js → [root-of-the-server]__c85ef334._.js} +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c85ef334._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__cf7aca8a._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__df7c1cd3._.js.map → [root-of-the-server]__cf7aca8a._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__2138fa7e._.js → [root-of-the-server]__e5851493._.js} +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e5851493._.js.map +1 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0c5f56e3._.js +2 -2
- package/web/.next/server/chunks/ssr/_0c5f56e3._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_17dbc240._.js +3 -0
- package/web/.next/server/chunks/ssr/_17dbc240._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_1b719e7f._.js +1 -1
- package/web/.next/server/chunks/ssr/_1b719e7f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_20a4a0d5._.js +3 -0
- package/web/.next/server/chunks/ssr/_20a4a0d5._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_8fcc39d4._.js → _212aafc7._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_8fcc39d4._.js.map → _212aafc7._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_26582473._.js +3 -0
- package/web/.next/server/chunks/ssr/_26582473._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_b5fc318a._.js → _277acdde._.js} +2 -2
- package/web/.next/server/chunks/ssr/_277acdde._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_92b9e766._.js → _3038739c._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_92b9e766._.js.map → _3038739c._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_37e8548b._.js +1 -1
- package/web/.next/server/chunks/ssr/_37e8548b._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_4711e8cf._.js +3 -0
- package/web/.next/server/chunks/ssr/_4711e8cf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_4b432739._.js +1 -1
- package/web/.next/server/chunks/ssr/_4b432739._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_55d763e2._.js +1 -1
- package/web/.next/server/chunks/ssr/_55d763e2._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_64bdfc6f._.js +2 -2
- package/web/.next/server/chunks/ssr/_64bdfc6f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_89a36303._.js +3 -0
- package/web/.next/server/chunks/ssr/_89a36303._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_0020fddd._.js → _a3721140._.js} +2 -2
- package/web/.next/server/chunks/ssr/_a3721140._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_b71645b4._.js +1 -1
- package/web/.next/server/chunks/ssr/_b71645b4._.js.map +1 -1
- 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/_e3411387._.js +9 -0
- package/web/.next/server/chunks/ssr/_e3411387._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_f35785e8._.js +3 -0
- package/web/.next/server/chunks/ssr/_f35785e8._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_f64ffec0._.js +4 -0
- package/web/.next/server/chunks/ssr/_f64ffec0._.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/{_1b7dae9a._.js → f7870_sonner_dist_index_mjs_dbf63824._.js} +2 -2
- package/web/.next/server/chunks/ssr/f7870_sonner_dist_index_mjs_dbf63824._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_28388798._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_28388798._.js.map +1 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_ae1705ef._.js +3 -0
- package/web/.next/server/chunks/ssr/node_modules__pnpm_ae1705ef._.js.map +1 -0
- package/web/.next/server/chunks/ssr/src_presentation_web_47c56a89._.js +3 -0
- package/web/.next/server/chunks/ssr/{src_presentation_web_f449e0af._.js.map → src_presentation_web_47c56a89._.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_app_actions_open-ide_ts_baaca5d5._.js +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/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +128 -47
- package/web/.next/static/chunks/012cd198f2f5f69b.js +1 -0
- package/web/.next/static/chunks/1717cd5043bdd3bd.js +1 -0
- package/web/.next/static/chunks/1760fdd748136b0a.js +1 -0
- package/web/.next/static/chunks/18c906505123f6bc.js +1 -0
- package/web/.next/static/chunks/{eb7b91c45ec7b468.js → 2be2403fc6ea10fb.js} +2 -2
- package/web/.next/static/chunks/2c1ff62df9b34313.js +1 -0
- package/web/.next/static/chunks/{672e3da3ad26005b.js → 42c9564e375717ed.js} +1 -1
- package/web/.next/static/chunks/5420560352333486.js +1 -0
- package/web/.next/static/chunks/581da2fea22a26ed.js +1 -0
- package/web/.next/static/chunks/7e664ecef6b0412b.js +1 -0
- package/web/.next/static/chunks/8254b51579b9bf14.js +1 -0
- package/web/.next/static/chunks/{9b8678597fa1db84.css → 919a5016ff5973a8.css} +1 -1
- package/web/.next/static/chunks/955de9c458882838.js +5 -0
- package/web/.next/static/chunks/{a18a5348858c6d75.js → 9d58a91a359e0b7d.js} +3 -3
- package/web/.next/static/chunks/{10b75a1ea923a690.js → c7865694beb27ce3.js} +1 -1
- package/web/.next/static/chunks/d7a464b957f611ba.js +1 -0
- package/web/.next/static/chunks/de2a780de5e1d718.js +1 -0
- package/web/.next/static/chunks/ed35b4293a81c861.js +9 -0
- package/web/.next/static/chunks/{97a773e5a88462a0.js → ed82c6ab93a79fa3.js} +1 -1
- package/web/.next/static/chunks/f29c8010a2d10bc5.js +1 -0
- package/web/.next/static/chunks/f75142a1b75f1c32.js +1 -0
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_8b618f7d._.js +0 -3
- package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_8b618f7d._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__2138fa7e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__df7c1cd3._.js +0 -3
- package/web/.next/server/chunks/ssr/_0020fddd._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_01046927._.js +0 -9
- package/web/.next/server/chunks/ssr/_01046927._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js +0 -3
- package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js +0 -3
- package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1b7dae9a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_6256a985._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_67104d9e._.js +0 -3
- package/web/.next/server/chunks/ssr/_67104d9e._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_b5fc318a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_bf695af2._.js +0 -3
- package/web/.next/server/chunks/ssr/_bf695af2._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_d4b20e29._.js +0 -3
- package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +0 -1
- package/web/.next/server/chunks/ssr/node_modules__pnpm_55c7a131._.js +0 -3
- package/web/.next/server/chunks/ssr/node_modules__pnpm_55c7a131._.js.map +0 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_f449e0af._.js +0 -3
- package/web/.next/static/chunks/08baac5434d9528e.js +0 -13
- package/web/.next/static/chunks/1f265c393614cad2.js +0 -1
- package/web/.next/static/chunks/413e2ca694528497.js +0 -1
- package/web/.next/static/chunks/49057cf8cd37e262.js +0 -1
- package/web/.next/static/chunks/56233eb0780a997e.js +0 -1
- package/web/.next/static/chunks/601d93593f5f664f.js +0 -1
- package/web/.next/static/chunks/688971d5bad5dc7c.js +0 -1
- package/web/.next/static/chunks/ad8f9fe681d88d09.js +0 -1
- package/web/.next/static/chunks/b70dd4985a814b27.js +0 -1
- package/web/.next/static/chunks/c69cea3bed20eea7.js +0 -1
- package/web/.next/static/chunks/d2e9df0b38f0d962.js +0 -1
- package/web/.next/static/chunks/f17d6d87a3508ba0.js +0 -1
- package/web/.next/static/chunks/f9a69279d55bfd3b.js +0 -1
- /package/web/.next/static/{e6hBEk7bk-CV1jLaYcZLX → Lsq24p2KQmGstqY0A7dDg}/_buildManifest.js +0 -0
- /package/web/.next/static/{e6hBEk7bk-CV1jLaYcZLX → Lsq24p2KQmGstqY0A7dDg}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{e6hBEk7bk-CV1jLaYcZLX → Lsq24p2KQmGstqY0A7dDg}/_ssgManifest.js +0 -0
|
@@ -30,6 +30,10 @@ properties:
|
|
|
30
30
|
type: boolean
|
|
31
31
|
default: false
|
|
32
32
|
description: Use the built-in React file manager instead of the native OS folder picker
|
|
33
|
+
scheduledWorkflows:
|
|
34
|
+
type: boolean
|
|
35
|
+
default: false
|
|
36
|
+
description: Enable scheduled workflows feature — workflow creation, scheduling, and execution
|
|
33
37
|
required:
|
|
34
38
|
- skills
|
|
35
39
|
- envDeploy
|
|
@@ -38,4 +42,5 @@ required:
|
|
|
38
42
|
- adoptBranch
|
|
39
43
|
- gitRebaseSync
|
|
40
44
|
- reactFileManager
|
|
45
|
+
- scheduledWorkflows
|
|
41
46
|
description: Feature flag toggles for runtime feature control
|
|
@@ -46,6 +46,18 @@ properties:
|
|
|
46
46
|
type: boolean
|
|
47
47
|
default: true
|
|
48
48
|
description: Notify when feature is ready for merge review
|
|
49
|
+
workflowStarted:
|
|
50
|
+
type: boolean
|
|
51
|
+
default: true
|
|
52
|
+
description: Notify when a scheduled workflow execution starts
|
|
53
|
+
workflowCompleted:
|
|
54
|
+
type: boolean
|
|
55
|
+
default: true
|
|
56
|
+
description: Notify when a scheduled workflow execution completes successfully
|
|
57
|
+
workflowFailed:
|
|
58
|
+
type: boolean
|
|
59
|
+
default: true
|
|
60
|
+
description: Notify when a scheduled workflow execution fails
|
|
49
61
|
required:
|
|
50
62
|
- agentStarted
|
|
51
63
|
- phaseCompleted
|
|
@@ -58,4 +70,7 @@ required:
|
|
|
58
70
|
- prChecksFailed
|
|
59
71
|
- prBlocked
|
|
60
72
|
- mergeReviewReady
|
|
73
|
+
- workflowStarted
|
|
74
|
+
- workflowCompleted
|
|
75
|
+
- workflowFailed
|
|
61
76
|
description: Notification event type filters
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
|
@@ -6,4 +6,6 @@
|
|
|
6
6
|
export type { IFeatureRepository, FeatureListFilters } from './feature-repository.interface.js';
|
|
7
7
|
export type { ISettingsRepository } from './settings.repository.interface.js';
|
|
8
8
|
export type { IRepositoryRepository } from './repository-repository.interface.js';
|
|
9
|
+
export type { IWorkflowRepository, WorkflowListFilters } from './workflow-repository.interface.js';
|
|
10
|
+
export type { IWorkflowExecutionRepository } from './workflow-execution-repository.interface.js';
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/repositories/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAChG,YAAY,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,YAAY,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/repositories/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAChG,YAAY,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,YAAY,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAClF,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACnG,YAAY,EAAE,4BAA4B,EAAE,MAAM,8CAA8C,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
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 {};
|
|
@@ -0,0 +1,81 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
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 {};
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
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 {};
|
|
@@ -15,6 +15,7 @@ export type { INotificationService } from './notification-service.interface.js';
|
|
|
15
15
|
export type { IGitPrService, CiStatus, CiStatusResult, DiffSummary, MergeStrategy, PrCreateResult, } from './git-pr-service.interface.js';
|
|
16
16
|
export { GitPrError, GitPrErrorCode } from './git-pr-service.interface.js';
|
|
17
17
|
export type { IIdeLauncherService, LaunchIdeInput, LaunchIdeResult, LaunchIdeSuccess, LaunchIdeFailed, } from './ide-launcher-service.interface.js';
|
|
18
|
+
export type { IClock } from './clock.interface.js';
|
|
18
19
|
export type { IDaemonService, DaemonState } from './daemon-service.interface.js';
|
|
19
20
|
export type { IDeploymentService, DeploymentStatus } from './deployment-service.interface.js';
|
|
20
21
|
export type { IGitHubRepositoryService, GitHubRepo, ListUserRepositoriesOptions, CloneOptions, ParsedGitHubUrl, } from './github-repository-service.interface.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACjG,YAAY,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,YAAY,EACV,aAAa,EACb,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjF,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC9F,YAAY,EACV,wBAAwB,EACxB,UAAU,EACV,2BAA2B,EAC3B,YAAY,EACZ,eAAe,GAChB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACjG,YAAY,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,YAAY,EACV,aAAa,EACb,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjF,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC9F,YAAY,EACV,wBAAwB,EACxB,UAAU,EACV,2BAA2B,EAC3B,YAAY,EACZ,eAAe,GAChB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
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
ADDED
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
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 };
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delete Workflow Use Case
|
|
3
|
+
*
|
|
4
|
+
* Soft-deletes a workflow and cancels any queued executions for it.
|
|
5
|
+
* Execution history is preserved subject to the retention policy.
|
|
6
|
+
*/
|
|
7
|
+
import type { ScheduledWorkflow } from '../../../domain/generated/output.js';
|
|
8
|
+
import type { IWorkflowRepository } from '../../ports/output/repositories/workflow-repository.interface.js';
|
|
9
|
+
import type { IWorkflowExecutionRepository } from '../../ports/output/repositories/workflow-execution-repository.interface.js';
|
|
10
|
+
import type { IClock } from '../../ports/output/services/clock.interface.js';
|
|
11
|
+
export declare class DeleteWorkflowUseCase {
|
|
12
|
+
private readonly workflowRepo;
|
|
13
|
+
private readonly executionRepo;
|
|
14
|
+
private readonly clock;
|
|
15
|
+
constructor(workflowRepo: IWorkflowRepository, executionRepo: IWorkflowExecutionRepository, clock: IClock);
|
|
16
|
+
execute(nameOrId: string, repositoryPath?: string): Promise<ScheduledWorkflow>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=delete-workflow.use-case.d.ts.map
|
package/dist/packages/core/src/application/use-cases/workflows/delete-workflow.use-case.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-workflow.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/workflows/delete-workflow.use-case.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;AAC5G,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4EAA4E,CAAC;AAC/H,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gDAAgD,CAAC;AAE7E,qBACa,qBAAqB;IAG9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAJL,YAAY,EAAE,mBAAmB,EAEjC,aAAa,EAAE,4BAA4B,EAE3C,KAAK,EAAE,MAAM;IAG1B,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA6BrF"}
|