@shepai/cli 1.136.0-pr439.2a7af41 → 1.136.0-pr441.5eaafd1
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/Repository.yaml +0 -3
- 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/index.d.ts +1 -1
- package/dist/packages/core/src/application/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/index.d.ts +1 -1
- package/dist/packages/core/src/application/ports/output/index.d.ts.map +1 -1
- 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/repository-repository.interface.d.ts +1 -1
- package/dist/packages/core/src/application/ports/output/repositories/repository-repository.interface.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 +2 -1
- package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts +5 -21
- package/dist/packages/core/src/application/ports/output/services/spec-initializer.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts +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 +2 -8
- 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 +112 -3
- 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/repository.mapper.d.ts +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.js +0 -2
- 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-repository.repository.d.ts +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.js +2 -6
- 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/prompts/evidence-prompts.d.ts +2 -4
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/evidence-prompts.js +8 -15
- 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/git/worktree.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/git/worktree.service.js +4 -2
- package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.js +4 -2
- 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/spec/spec-initializer.service.d.ts +3 -17
- package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/spec/spec-initializer.service.js +13 -49
- 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/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 +1 -1
- package/web/.next/required-server-files.json +1 -1
- package/web/.next/routes-manifest.json +6 -0
- 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 +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 +31 -31
- 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 +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 +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 +31 -31
- 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 +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 +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/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 +18 -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 +1 -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]__2b1074db._.js → [root-of-the-server]__c7d52490._.js} +2 -2
- 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/{_02ec1aea._.js → 403f9_next_53742624._.js} +2 -2
- package/web/.next/server/chunks/ssr/403f9_next_53742624._.js.map +1 -0
- 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_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/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]__a5f9c6e5._.js → [root-of-the-server]__07f12984._.js} +3 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__07f12984._.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]__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]__33ac1a70._.js +3 -0
- package/web/.next/server/chunks/ssr/[root-of-the-server]__33ac1a70._.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]__f4e193d3._.js → [root-of-the-server]__47ded061._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__f4e193d3._.js.map → [root-of-the-server]__47ded061._.js.map} +1 -1
- 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]__d68f61dd._.js → [root-of-the-server]__68ce373c._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__d68f61dd._.js.map → [root-of-the-server]__68ce373c._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6e93b49c._.js +3 -0
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__b3dbadca._.js.map → [root-of-the-server]__6e93b49c._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__b1670307._.js → [root-of-the-server]__718766da._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__b1670307._.js.map → [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]__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]__785e8499._.js → [root-of-the-server]__fdd058b2._.js} +2 -2
- package/web/.next/server/chunks/ssr/{[root-of-the-server]__785e8499._.js.map → [root-of-the-server]__fdd058b2._.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/_25555eb5._.js +3 -0
- package/web/.next/server/chunks/ssr/_25555eb5._.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/_4711e8cf._.js +3 -0
- package/web/.next/server/chunks/ssr/_4711e8cf._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_a9f57758._.js → _6701ee41._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_a9f57758._.js.map → _6701ee41._.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/{_32961561._.js → _8e8cd7e1._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_32961561._.js.map → _8e8cd7e1._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_9869d3da._.js +3 -0
- package/web/.next/server/chunks/ssr/_9869d3da._.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/_a37f5f18._.js +1 -1
- package/web/.next/server/chunks/ssr/_a37f5f18._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_cc1243e6._.js +3 -0
- package/web/.next/server/chunks/ssr/_cc1243e6._.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/_e3411387._.js +9 -0
- package/web/.next/server/chunks/ssr/_e3411387._.js.map +1 -0
- package/web/.next/server/chunks/ssr/_e69a26ba._.js +1 -1
- 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_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_53fa3010._.js +3 -0
- package/web/.next/server/chunks/ssr/{src_presentation_web_06ffd221._.js.map → src_presentation_web_53fa3010._.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 +123 -42
- package/web/.next/static/chunks/{d0be9b22c3b9bce8.js → 196650f8cd7fb06a.js} +1 -1
- package/web/.next/static/chunks/{92cd6f523639a6fa.css → 2002f5eec5ffec42.css} +1 -1
- package/web/.next/static/chunks/2c1ff62df9b34313.js +1 -0
- package/web/.next/static/chunks/3005583e819fc4fc.js +1 -0
- package/web/.next/static/chunks/333c7873f6b17ef1.js +1 -0
- package/web/.next/static/chunks/3b3f8c4f6c36a7ba.js +1 -0
- package/web/.next/static/chunks/{672e3da3ad26005b.js → 42c9564e375717ed.js} +1 -1
- package/web/.next/static/chunks/43e0eea352eb5106.js +5 -0
- package/web/.next/static/chunks/5420560352333486.js +1 -0
- package/web/.next/static/chunks/62fa33876b0964a4.js +1 -0
- package/web/.next/static/chunks/6db2addb5e13e372.js +1 -0
- package/web/.next/static/chunks/886d0385ca1d4484.js +1 -0
- package/web/.next/static/chunks/8e52a649c3f6bdf4.js +1 -0
- package/web/.next/static/chunks/a02fc9467a585a1f.js +2 -0
- package/web/.next/static/chunks/{796bb98fb3f35b71.js → bee578019062e7f9.js} +1 -1
- package/web/.next/static/chunks/cdb51cfd682387d2.js +1 -0
- package/web/.next/static/chunks/ed35b4293a81c861.js +9 -0
- package/web/.next/static/chunks/ed7fbcdf0b48e735.js +1 -0
- package/web/.next/static/chunks/f75142a1b75f1c32.js +1 -0
- package/web/.next/static/chunks/fabcd29d488281fa.js +1 -0
- package/web/.next/static/chunks/fd925f996c3fa318.js +1 -0
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-spec-storage-mode.d.ts +0 -12
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-spec-storage-mode.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-spec-storage-mode.js +0 -19
- package/dist/packages/core/src/infrastructure/services/filesystem/repo-hash.d.ts +0 -17
- package/dist/packages/core/src/infrastructure/services/filesystem/repo-hash.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/filesystem/repo-hash.js +0 -21
- 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]__3ef34e4c._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js +0 -3
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a5f9c6e5._.js.map +0 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b3dbadca._.js +0 -3
- 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/_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/_02ec1aea._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_1b7dae9a._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_503680be._.js +0 -3
- package/web/.next/server/chunks/ssr/_503680be._.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/_7dca1882._.js +0 -3
- package/web/.next/server/chunks/ssr/_7dca1882._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_b5fc318a._.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/_f39a1adb._.js +0 -3
- package/web/.next/server/chunks/ssr/_f39a1adb._.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_06ffd221._.js +0 -3
- package/web/.next/static/chunks/0b7fe2ac4f078f54.js +0 -13
- package/web/.next/static/chunks/2bbb31a39a80d011.js +0 -1
- package/web/.next/static/chunks/5466ac7c8d7c6b2b.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/6daf875725c43e2c.js +0 -2
- package/web/.next/static/chunks/991f2fcba923f3ed.js +0 -1
- package/web/.next/static/chunks/af4d1051b6fa73d5.js +0 -1
- package/web/.next/static/chunks/b70dd4985a814b27.js +0 -1
- package/web/.next/static/chunks/c317cd6a6f76361d.js +0 -1
- package/web/.next/static/chunks/d0dff217a94d4ee1.js +0 -1
- package/web/.next/static/chunks/db862617e62ba1f9.js +0 -1
- package/web/.next/static/chunks/e15904973d49ff89.js +0 -1
- package/web/.next/static/chunks/e6cff1dacc561fa0.js +0 -1
- package/web/.next/static/chunks/e8d49a8e1274cb49.js +0 -1
- /package/web/.next/server/chunks/{[root-of-the-server]__2b1074db._.js.map → [root-of-the-server]__c7d52490._.js.map} +0 -0
- /package/web/.next/static/{xpAWvEAtoYdP3klvh5Yyo → w0YQoUPySQy1O9cN91KEk}/_buildManifest.js +0 -0
- /package/web/.next/static/{xpAWvEAtoYdP3klvh5Yyo → w0YQoUPySQy1O9cN91KEk}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{xpAWvEAtoYdP3klvh5Yyo → w0YQoUPySQy1O9cN91KEk}/_ssgManifest.js +0 -0
|
@@ -42,6 +42,9 @@ import { DesktopNotifier } from '../services/notifications/desktop-notifier.js';
|
|
|
42
42
|
import { NotificationService } from '../services/notifications/notification.service.js';
|
|
43
43
|
import { getNotificationBus } from '../services/notifications/notification-bus.js';
|
|
44
44
|
import { spawn } from 'node:child_process';
|
|
45
|
+
import { SQLiteWorkflowRepository } from '../repositories/sqlite-workflow.repository.js';
|
|
46
|
+
import { SQLiteWorkflowExecutionRepository } from '../repositories/sqlite-workflow-execution.repository.js';
|
|
47
|
+
import { RealClock } from '../services/clock.js';
|
|
45
48
|
// Use cases
|
|
46
49
|
import { InitializeSettingsUseCase } from '../../application/use-cases/settings/initialize-settings.use-case.js';
|
|
47
50
|
import { LoadSettingsUseCase } from '../../application/use-cases/settings/load-settings.use-case.js';
|
|
@@ -84,6 +87,16 @@ import { CheckAndUnblockFeaturesUseCase } from '../../application/use-cases/feat
|
|
|
84
87
|
import { UpdateFeatureLifecycleUseCase } from '../../application/use-cases/features/update/update-feature-lifecycle.use-case.js';
|
|
85
88
|
import { CleanupFeatureWorktreeUseCase } from '../../application/use-cases/features/cleanup-feature-worktree.use-case.js';
|
|
86
89
|
import { UpgradeCliUseCase } from '../../application/use-cases/upgrade/upgrade-cli.use-case.js';
|
|
90
|
+
// Workflow use cases
|
|
91
|
+
import { CreateWorkflowUseCase } from '../../application/use-cases/workflows/create-workflow.use-case.js';
|
|
92
|
+
import { UpdateWorkflowUseCase } from '../../application/use-cases/workflows/update-workflow.use-case.js';
|
|
93
|
+
import { DeleteWorkflowUseCase } from '../../application/use-cases/workflows/delete-workflow.use-case.js';
|
|
94
|
+
import { ListWorkflowsUseCase } from '../../application/use-cases/workflows/list-workflows.use-case.js';
|
|
95
|
+
import { GetWorkflowUseCase } from '../../application/use-cases/workflows/get-workflow.use-case.js';
|
|
96
|
+
import { RunWorkflowUseCase } from '../../application/use-cases/workflows/run-workflow.use-case.js';
|
|
97
|
+
import { ScheduleWorkflowUseCase } from '../../application/use-cases/workflows/schedule-workflow.use-case.js';
|
|
98
|
+
import { GetWorkflowHistoryUseCase } from '../../application/use-cases/workflows/get-workflow-history.use-case.js';
|
|
99
|
+
import { ToggleWorkflowUseCase } from '../../application/use-cases/workflows/toggle-workflow.use-case.js';
|
|
87
100
|
// Session listing
|
|
88
101
|
import { ClaudeCodeSessionRepository } from '../services/agents/sessions/claude-code-session.repository.js';
|
|
89
102
|
import { StubSessionRepository } from '../services/agents/sessions/stub-session.repository.js';
|
|
@@ -131,6 +144,21 @@ export async function initializeContainer() {
|
|
|
131
144
|
return new SQLiteRepositoryRepository(database);
|
|
132
145
|
},
|
|
133
146
|
});
|
|
147
|
+
// Register workflow repositories
|
|
148
|
+
container.register('IWorkflowRepository', {
|
|
149
|
+
useFactory: (c) => {
|
|
150
|
+
const database = c.resolve('Database');
|
|
151
|
+
return new SQLiteWorkflowRepository(database);
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
container.register('IWorkflowExecutionRepository', {
|
|
155
|
+
useFactory: (c) => {
|
|
156
|
+
const database = c.resolve('Database');
|
|
157
|
+
return new SQLiteWorkflowExecutionRepository(database);
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
// Register IClock
|
|
161
|
+
container.registerInstance('IClock', new RealClock());
|
|
134
162
|
// Register external dependencies as tokens
|
|
135
163
|
// On Windows, agent CLIs ship as .cmd/.ps1 scripts (e.g. cursor's `agent.cmd`).
|
|
136
164
|
// execFile without shell: true cannot resolve .cmd extensions, causing ENOENT.
|
|
@@ -305,6 +333,16 @@ export async function initializeContainer() {
|
|
|
305
333
|
container.registerSingleton(UpdateFeatureLifecycleUseCase);
|
|
306
334
|
container.registerSingleton(CleanupFeatureWorktreeUseCase);
|
|
307
335
|
container.registerSingleton(UpgradeCliUseCase);
|
|
336
|
+
// Workflow use cases
|
|
337
|
+
container.registerSingleton(CreateWorkflowUseCase);
|
|
338
|
+
container.registerSingleton(UpdateWorkflowUseCase);
|
|
339
|
+
container.registerSingleton(DeleteWorkflowUseCase);
|
|
340
|
+
container.registerSingleton(ListWorkflowsUseCase);
|
|
341
|
+
container.registerSingleton(GetWorkflowUseCase);
|
|
342
|
+
container.registerSingleton(RunWorkflowUseCase);
|
|
343
|
+
container.registerSingleton(ScheduleWorkflowUseCase);
|
|
344
|
+
container.registerSingleton(GetWorkflowHistoryUseCase);
|
|
345
|
+
container.registerSingleton(ToggleWorkflowUseCase);
|
|
308
346
|
// Session repositories (per-AgentType string tokens)
|
|
309
347
|
container.register(`IAgentSessionRepository:${AgentType.ClaudeCode}`, {
|
|
310
348
|
useFactory: () => new ClaudeCodeSessionRepository(),
|
|
@@ -404,6 +442,34 @@ export async function initializeContainer() {
|
|
|
404
442
|
container.register('UpgradeCliUseCase', {
|
|
405
443
|
useFactory: (c) => c.resolve(UpgradeCliUseCase),
|
|
406
444
|
});
|
|
445
|
+
// Workflow use case string-token aliases
|
|
446
|
+
container.register('CreateWorkflowUseCase', {
|
|
447
|
+
useFactory: (c) => c.resolve(CreateWorkflowUseCase),
|
|
448
|
+
});
|
|
449
|
+
container.register('UpdateWorkflowUseCase', {
|
|
450
|
+
useFactory: (c) => c.resolve(UpdateWorkflowUseCase),
|
|
451
|
+
});
|
|
452
|
+
container.register('DeleteWorkflowUseCase', {
|
|
453
|
+
useFactory: (c) => c.resolve(DeleteWorkflowUseCase),
|
|
454
|
+
});
|
|
455
|
+
container.register('ListWorkflowsUseCase', {
|
|
456
|
+
useFactory: (c) => c.resolve(ListWorkflowsUseCase),
|
|
457
|
+
});
|
|
458
|
+
container.register('GetWorkflowUseCase', {
|
|
459
|
+
useFactory: (c) => c.resolve(GetWorkflowUseCase),
|
|
460
|
+
});
|
|
461
|
+
container.register('RunWorkflowUseCase', {
|
|
462
|
+
useFactory: (c) => c.resolve(RunWorkflowUseCase),
|
|
463
|
+
});
|
|
464
|
+
container.register('ScheduleWorkflowUseCase', {
|
|
465
|
+
useFactory: (c) => c.resolve(ScheduleWorkflowUseCase),
|
|
466
|
+
});
|
|
467
|
+
container.register('GetWorkflowHistoryUseCase', {
|
|
468
|
+
useFactory: (c) => c.resolve(GetWorkflowHistoryUseCase),
|
|
469
|
+
});
|
|
470
|
+
container.register('ToggleWorkflowUseCase', {
|
|
471
|
+
useFactory: (c) => c.resolve(ToggleWorkflowUseCase),
|
|
472
|
+
});
|
|
407
473
|
_initialized = true;
|
|
408
474
|
return container;
|
|
409
475
|
}
|
package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.mapper.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,
|
|
1
|
+
{"version":3,"file":"repository.mapper.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,CAc1D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,UAAU,CAU3D"}
|
package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/repository.mapper.js
CHANGED
|
@@ -16,7 +16,6 @@ export function toDatabase(repo) {
|
|
|
16
16
|
name: repo.name,
|
|
17
17
|
path: repo.path,
|
|
18
18
|
remote_url: repo.remoteUrl ?? null,
|
|
19
|
-
spec_storage_mode: repo.specStorageMode ?? null,
|
|
20
19
|
created_at: repo.createdAt instanceof Date ? repo.createdAt.getTime() : repo.createdAt,
|
|
21
20
|
updated_at: repo.updatedAt instanceof Date ? repo.updatedAt.getTime() : repo.updatedAt,
|
|
22
21
|
deleted_at: repo.deletedAt
|
|
@@ -35,7 +34,6 @@ export function fromDatabase(row) {
|
|
|
35
34
|
name: row.name,
|
|
36
35
|
path: row.path,
|
|
37
36
|
remoteUrl: row.remote_url ?? undefined,
|
|
38
|
-
specStorageMode: row.spec_storage_mode ?? 'in-repo',
|
|
39
37
|
createdAt: new Date(row.created_at),
|
|
40
38
|
updatedAt: new Date(row.updated_at),
|
|
41
39
|
deletedAt: row.deleted_at ? new Date(row.deleted_at) : undefined,
|
package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts
CHANGED
|
@@ -49,6 +49,9 @@ export interface SettingsRow {
|
|
|
49
49
|
notif_evt_pr_checks_failed: number;
|
|
50
50
|
notif_evt_pr_blocked: number;
|
|
51
51
|
notif_evt_merge_review_ready: number;
|
|
52
|
+
notif_evt_workflow_started: number;
|
|
53
|
+
notif_evt_workflow_completed: number;
|
|
54
|
+
notif_evt_workflow_failed: number;
|
|
52
55
|
workflow_open_pr_on_impl_complete: number;
|
|
53
56
|
ci_max_fix_attempts: number | null;
|
|
54
57
|
ci_watch_timeout_ms: number | null;
|
|
@@ -75,6 +78,7 @@ export interface SettingsRow {
|
|
|
75
78
|
feature_flag_github_import: number;
|
|
76
79
|
feature_flag_adopt_branch: number;
|
|
77
80
|
feature_flag_react_file_manager: number;
|
|
81
|
+
feature_flag_scheduled_workflows: number;
|
|
78
82
|
}
|
|
79
83
|
/**
|
|
80
84
|
* Maps Settings domain object to database row.
|
package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.mapper.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAQvE;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAInB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAGhC,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAG3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,yBAAyB,EAAE,MAAM,CAAC;IAClC,0BAA0B,EAAE,MAAM,CAAC;IACnC,yBAAyB,EAAE,MAAM,CAAC;IAClC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0BAA0B,EAAE,MAAM,CAAC;IACnC,0BAA0B,EAAE,MAAM,CAAC;IACnC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4BAA4B,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.mapper.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAQvE;;;GAGG;AACH,MAAM,WAAW,WAAW;IAE1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAInB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAGhC,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IAGtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAG3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,MAAM,CAAC;IAChC,yBAAyB,EAAE,MAAM,CAAC;IAClC,0BAA0B,EAAE,MAAM,CAAC;IACnC,yBAAyB,EAAE,MAAM,CAAC;IAClC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,0BAA0B,EAAE,MAAM,CAAC;IACnC,0BAA0B,EAAE,MAAM,CAAC;IACnC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4BAA4B,EAAE,MAAM,CAAC;IACrC,0BAA0B,EAAE,MAAM,CAAC;IACnC,4BAA4B,EAAE,MAAM,CAAC;IACrC,yBAAyB,EAAE,MAAM,CAAC;IAGlC,iCAAiC,EAAE,MAAM,CAAC;IAG1C,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IAGzB,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,6BAA6B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGtC,+BAA+B,EAAE,MAAM,GAAG,IAAI,CAAC;IAG/C,mBAAmB,EAAE,MAAM,CAAC;IAG5B,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,yBAAyB,EAAE,MAAM,CAAC;IAClC,mCAAmC,EAAE,MAAM,CAAC;IAG5C,wBAAwB,EAAE,MAAM,CAAC;IACjC,wBAAwB,EAAE,MAAM,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IAGvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0BAA0B,EAAE,MAAM,CAAC;IACnC,yBAAyB,EAAE,MAAM,CAAC;IAClC,+BAA+B,EAAE,MAAM,CAAC;IACxC,gCAAgC,EAAE,MAAM,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAoG1D;AAsCD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,QAAQ,CAgGvD"}
|
|
@@ -59,6 +59,9 @@ export function toDatabase(settings) {
|
|
|
59
59
|
notif_evt_pr_checks_failed: settings.notifications.events.prChecksFailed ? 1 : 0,
|
|
60
60
|
notif_evt_pr_blocked: settings.notifications.events.prBlocked ? 1 : 0,
|
|
61
61
|
notif_evt_merge_review_ready: settings.notifications.events.mergeReviewReady ? 1 : 0,
|
|
62
|
+
notif_evt_workflow_started: settings.notifications.events.workflowStarted ? 1 : 0,
|
|
63
|
+
notif_evt_workflow_completed: settings.notifications.events.workflowCompleted ? 1 : 0,
|
|
64
|
+
notif_evt_workflow_failed: settings.notifications.events.workflowFailed ? 1 : 0,
|
|
62
65
|
// WorkflowConfig (boolean → INTEGER)
|
|
63
66
|
workflow_open_pr_on_impl_complete: settings.workflow.openPrOnImplementationComplete ? 1 : 0,
|
|
64
67
|
// WorkflowConfig CI settings (optional number → INTEGER | null)
|
|
@@ -96,6 +99,7 @@ export function toDatabase(settings) {
|
|
|
96
99
|
feature_flag_github_import: settings.featureFlags?.githubImport ? 1 : 0,
|
|
97
100
|
feature_flag_adopt_branch: settings.featureFlags?.adoptBranch ? 1 : 0,
|
|
98
101
|
feature_flag_react_file_manager: settings.featureFlags?.reactFileManager ? 1 : 0,
|
|
102
|
+
feature_flag_scheduled_workflows: settings.featureFlags?.scheduledWorkflows ? 1 : 0,
|
|
99
103
|
};
|
|
100
104
|
}
|
|
101
105
|
/**
|
|
@@ -188,6 +192,9 @@ export function fromDatabase(row) {
|
|
|
188
192
|
prChecksFailed: row.notif_evt_pr_checks_failed === 1,
|
|
189
193
|
prBlocked: row.notif_evt_pr_blocked === 1,
|
|
190
194
|
mergeReviewReady: row.notif_evt_merge_review_ready === 1,
|
|
195
|
+
workflowStarted: row.notif_evt_workflow_started === 1,
|
|
196
|
+
workflowCompleted: row.notif_evt_workflow_completed === 1,
|
|
197
|
+
workflowFailed: row.notif_evt_workflow_failed === 1,
|
|
191
198
|
},
|
|
192
199
|
},
|
|
193
200
|
// WorkflowConfig (INTEGER → boolean)
|
|
@@ -217,6 +224,7 @@ export function fromDatabase(row) {
|
|
|
217
224
|
githubImport: row.feature_flag_github_import === 1,
|
|
218
225
|
adoptBranch: row.feature_flag_adopt_branch === 1,
|
|
219
226
|
reactFileManager: row.feature_flag_react_file_manager === 1,
|
|
227
|
+
scheduledWorkflows: row.feature_flag_scheduled_workflows === 1,
|
|
220
228
|
},
|
|
221
229
|
// Onboarding (INTEGER → boolean)
|
|
222
230
|
onboardingComplete: row.onboarding_complete === 1,
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow Execution Database Mapper
|
|
3
|
+
*
|
|
4
|
+
* Maps between WorkflowExecution domain objects and SQLite database rows.
|
|
5
|
+
*
|
|
6
|
+
* Mapping Rules:
|
|
7
|
+
* - TypeScript objects (camelCase) <-> SQL columns (snake_case)
|
|
8
|
+
* - Dates stored as INTEGER (unix milliseconds)
|
|
9
|
+
* - Optional fields stored as NULL when missing
|
|
10
|
+
* - Enum values (WorkflowTriggerType, WorkflowExecutionStatus) stored as strings
|
|
11
|
+
*/
|
|
12
|
+
import type { WorkflowExecution } from '../../../../domain/generated/output.js';
|
|
13
|
+
/**
|
|
14
|
+
* Database row type matching the workflow_executions table schema.
|
|
15
|
+
* Uses snake_case column names.
|
|
16
|
+
*/
|
|
17
|
+
export interface WorkflowExecutionRow {
|
|
18
|
+
id: string;
|
|
19
|
+
workflow_id: string;
|
|
20
|
+
trigger_type: string;
|
|
21
|
+
status: string;
|
|
22
|
+
started_at: number;
|
|
23
|
+
completed_at: number | null;
|
|
24
|
+
duration_ms: number | null;
|
|
25
|
+
output_summary: string | null;
|
|
26
|
+
error_message: string | null;
|
|
27
|
+
created_at: number;
|
|
28
|
+
updated_at: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Maps WorkflowExecution domain object to database row.
|
|
32
|
+
* Converts Date objects to unix milliseconds for SQL storage.
|
|
33
|
+
*
|
|
34
|
+
* @param execution - WorkflowExecution domain object
|
|
35
|
+
* @returns Database row object with snake_case columns
|
|
36
|
+
*/
|
|
37
|
+
export declare function toDatabase(execution: WorkflowExecution): WorkflowExecutionRow;
|
|
38
|
+
/**
|
|
39
|
+
* Maps database row to WorkflowExecution domain object.
|
|
40
|
+
* Converts unix milliseconds back to Date objects.
|
|
41
|
+
*
|
|
42
|
+
* @param row - Database row with snake_case columns
|
|
43
|
+
* @returns WorkflowExecution domain object with camelCase properties
|
|
44
|
+
*/
|
|
45
|
+
export declare function fromDatabase(row: WorkflowExecutionRow): WorkflowExecution;
|
|
46
|
+
//# sourceMappingURL=workflow-execution.mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-execution.mapper.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/mappers/workflow-execution.mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAMhF;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,iBAAiB,GAAG,oBAAoB,CAoB7E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,oBAAoB,GAAG,iBAAiB,CAczE"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow Execution Database Mapper
|
|
3
|
+
*
|
|
4
|
+
* Maps between WorkflowExecution domain objects and SQLite database rows.
|
|
5
|
+
*
|
|
6
|
+
* Mapping Rules:
|
|
7
|
+
* - TypeScript objects (camelCase) <-> SQL columns (snake_case)
|
|
8
|
+
* - Dates stored as INTEGER (unix milliseconds)
|
|
9
|
+
* - Optional fields stored as NULL when missing
|
|
10
|
+
* - Enum values (WorkflowTriggerType, WorkflowExecutionStatus) stored as strings
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Maps WorkflowExecution domain object to database row.
|
|
14
|
+
* Converts Date objects to unix milliseconds for SQL storage.
|
|
15
|
+
*
|
|
16
|
+
* @param execution - WorkflowExecution domain object
|
|
17
|
+
* @returns Database row object with snake_case columns
|
|
18
|
+
*/
|
|
19
|
+
export function toDatabase(execution) {
|
|
20
|
+
return {
|
|
21
|
+
id: execution.id,
|
|
22
|
+
workflow_id: execution.workflowId,
|
|
23
|
+
trigger_type: execution.triggerType,
|
|
24
|
+
status: execution.status,
|
|
25
|
+
started_at: execution.startedAt instanceof Date ? execution.startedAt.getTime() : execution.startedAt,
|
|
26
|
+
completed_at: execution.completedAt instanceof Date
|
|
27
|
+
? execution.completedAt.getTime()
|
|
28
|
+
: (execution.completedAt ?? null),
|
|
29
|
+
duration_ms: execution.durationMs ?? null,
|
|
30
|
+
output_summary: execution.outputSummary ?? null,
|
|
31
|
+
error_message: execution.errorMessage ?? null,
|
|
32
|
+
created_at: execution.createdAt instanceof Date ? execution.createdAt.getTime() : execution.createdAt,
|
|
33
|
+
updated_at: execution.updatedAt instanceof Date ? execution.updatedAt.getTime() : execution.updatedAt,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Maps database row to WorkflowExecution domain object.
|
|
38
|
+
* Converts unix milliseconds back to Date objects.
|
|
39
|
+
*
|
|
40
|
+
* @param row - Database row with snake_case columns
|
|
41
|
+
* @returns WorkflowExecution domain object with camelCase properties
|
|
42
|
+
*/
|
|
43
|
+
export function fromDatabase(row) {
|
|
44
|
+
return {
|
|
45
|
+
id: row.id,
|
|
46
|
+
workflowId: row.workflow_id,
|
|
47
|
+
triggerType: row.trigger_type,
|
|
48
|
+
status: row.status,
|
|
49
|
+
startedAt: new Date(row.started_at),
|
|
50
|
+
createdAt: new Date(row.created_at),
|
|
51
|
+
updatedAt: new Date(row.updated_at),
|
|
52
|
+
...(row.completed_at != null && { completedAt: new Date(row.completed_at) }),
|
|
53
|
+
...(row.duration_ms != null && { durationMs: row.duration_ms }),
|
|
54
|
+
...(row.output_summary != null && { outputSummary: row.output_summary }),
|
|
55
|
+
...(row.error_message != null && { errorMessage: row.error_message }),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduled Workflow Database Mapper
|
|
3
|
+
*
|
|
4
|
+
* Maps between ScheduledWorkflow domain objects and SQLite database rows.
|
|
5
|
+
*
|
|
6
|
+
* Mapping Rules:
|
|
7
|
+
* - TypeScript objects (camelCase) <-> SQL columns (snake_case)
|
|
8
|
+
* - Dates stored as INTEGER (unix milliseconds)
|
|
9
|
+
* - Optional fields stored as NULL when missing
|
|
10
|
+
* - toolConstraints stored as JSON TEXT array
|
|
11
|
+
* - enabled stored as INTEGER (0/1)
|
|
12
|
+
* - SoftDeletableEntity: deletedAt mapped to deleted_at
|
|
13
|
+
*/
|
|
14
|
+
import type { ScheduledWorkflow } from '../../../../domain/generated/output.js';
|
|
15
|
+
/**
|
|
16
|
+
* Database row type matching the scheduled_workflows table schema.
|
|
17
|
+
* Uses snake_case column names.
|
|
18
|
+
*/
|
|
19
|
+
export interface ScheduledWorkflowRow {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
description: string | null;
|
|
23
|
+
prompt: string;
|
|
24
|
+
tool_constraints: string | null;
|
|
25
|
+
cron_expression: string | null;
|
|
26
|
+
timezone: string | null;
|
|
27
|
+
enabled: number;
|
|
28
|
+
last_run_at: number | null;
|
|
29
|
+
next_run_at: number | null;
|
|
30
|
+
repository_path: string;
|
|
31
|
+
deleted_at: number | null;
|
|
32
|
+
created_at: number;
|
|
33
|
+
updated_at: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Maps ScheduledWorkflow domain object to database row.
|
|
37
|
+
* Converts Date objects to unix milliseconds and complex fields to JSON for SQL storage.
|
|
38
|
+
*
|
|
39
|
+
* @param workflow - ScheduledWorkflow domain object
|
|
40
|
+
* @returns Database row object with snake_case columns
|
|
41
|
+
*/
|
|
42
|
+
export declare function toDatabase(workflow: ScheduledWorkflow): ScheduledWorkflowRow;
|
|
43
|
+
/**
|
|
44
|
+
* Maps database row to ScheduledWorkflow domain object.
|
|
45
|
+
* Converts unix milliseconds back to Date objects and JSON strings to arrays.
|
|
46
|
+
*
|
|
47
|
+
* @param row - Database row with snake_case columns
|
|
48
|
+
* @returns ScheduledWorkflow domain object with camelCase properties
|
|
49
|
+
*/
|
|
50
|
+
export declare function fromDatabase(row: ScheduledWorkflowRow): ScheduledWorkflow;
|
|
51
|
+
//# sourceMappingURL=workflow.mapper.d.ts.map
|
package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/workflow.mapper.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.mapper.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/mappers/workflow.mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAEhF;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,iBAAiB,GAAG,oBAAoB,CA4B5E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,oBAAoB,GAAG,iBAAiB,CAmBzE"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scheduled Workflow Database Mapper
|
|
3
|
+
*
|
|
4
|
+
* Maps between ScheduledWorkflow domain objects and SQLite database rows.
|
|
5
|
+
*
|
|
6
|
+
* Mapping Rules:
|
|
7
|
+
* - TypeScript objects (camelCase) <-> SQL columns (snake_case)
|
|
8
|
+
* - Dates stored as INTEGER (unix milliseconds)
|
|
9
|
+
* - Optional fields stored as NULL when missing
|
|
10
|
+
* - toolConstraints stored as JSON TEXT array
|
|
11
|
+
* - enabled stored as INTEGER (0/1)
|
|
12
|
+
* - SoftDeletableEntity: deletedAt mapped to deleted_at
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Maps ScheduledWorkflow domain object to database row.
|
|
16
|
+
* Converts Date objects to unix milliseconds and complex fields to JSON for SQL storage.
|
|
17
|
+
*
|
|
18
|
+
* @param workflow - ScheduledWorkflow domain object
|
|
19
|
+
* @returns Database row object with snake_case columns
|
|
20
|
+
*/
|
|
21
|
+
export function toDatabase(workflow) {
|
|
22
|
+
return {
|
|
23
|
+
id: workflow.id,
|
|
24
|
+
name: workflow.name,
|
|
25
|
+
description: workflow.description ?? null,
|
|
26
|
+
prompt: workflow.prompt,
|
|
27
|
+
tool_constraints: workflow.toolConstraints ? JSON.stringify(workflow.toolConstraints) : null,
|
|
28
|
+
cron_expression: workflow.cronExpression ?? null,
|
|
29
|
+
timezone: workflow.timezone ?? null,
|
|
30
|
+
enabled: workflow.enabled ? 1 : 0,
|
|
31
|
+
last_run_at: workflow.lastRunAt instanceof Date
|
|
32
|
+
? workflow.lastRunAt.getTime()
|
|
33
|
+
: (workflow.lastRunAt ?? null),
|
|
34
|
+
next_run_at: workflow.nextRunAt instanceof Date
|
|
35
|
+
? workflow.nextRunAt.getTime()
|
|
36
|
+
: (workflow.nextRunAt ?? null),
|
|
37
|
+
repository_path: workflow.repositoryPath,
|
|
38
|
+
deleted_at: workflow.deletedAt instanceof Date
|
|
39
|
+
? workflow.deletedAt.getTime()
|
|
40
|
+
: (workflow.deletedAt ?? null),
|
|
41
|
+
created_at: workflow.createdAt instanceof Date ? workflow.createdAt.getTime() : workflow.createdAt,
|
|
42
|
+
updated_at: workflow.updatedAt instanceof Date ? workflow.updatedAt.getTime() : workflow.updatedAt,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Maps database row to ScheduledWorkflow domain object.
|
|
47
|
+
* Converts unix milliseconds back to Date objects and JSON strings to arrays.
|
|
48
|
+
*
|
|
49
|
+
* @param row - Database row with snake_case columns
|
|
50
|
+
* @returns ScheduledWorkflow domain object with camelCase properties
|
|
51
|
+
*/
|
|
52
|
+
export function fromDatabase(row) {
|
|
53
|
+
return {
|
|
54
|
+
id: row.id,
|
|
55
|
+
name: row.name,
|
|
56
|
+
prompt: row.prompt,
|
|
57
|
+
enabled: row.enabled === 1,
|
|
58
|
+
repositoryPath: row.repository_path,
|
|
59
|
+
createdAt: new Date(row.created_at),
|
|
60
|
+
updatedAt: new Date(row.updated_at),
|
|
61
|
+
...(row.description != null && { description: row.description }),
|
|
62
|
+
...(row.tool_constraints != null && {
|
|
63
|
+
toolConstraints: JSON.parse(row.tool_constraints),
|
|
64
|
+
}),
|
|
65
|
+
...(row.cron_expression != null && { cronExpression: row.cron_expression }),
|
|
66
|
+
...(row.timezone != null && { timezone: row.timezone }),
|
|
67
|
+
...(row.last_run_at != null && { lastRunAt: new Date(row.last_run_at) }),
|
|
68
|
+
...(row.next_run_at != null && { nextRunAt: new Date(row.next_run_at) }),
|
|
69
|
+
...(row.deleted_at != null && { deletedAt: new Date(row.deleted_at) }),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 044: Add workflow notification event columns to settings table.
|
|
3
|
+
*
|
|
4
|
+
* Adds three new notification event type filter columns for scheduled
|
|
5
|
+
* workflow execution events: started, completed, and failed.
|
|
6
|
+
* All default to 1 (enabled).
|
|
7
|
+
*/
|
|
8
|
+
import type { MigrationParams } from 'umzug';
|
|
9
|
+
import type Database from 'better-sqlite3';
|
|
10
|
+
export declare function up({ context: db }: MigrationParams<Database.Database>): Promise<void>;
|
|
11
|
+
export declare function down({ context: db }: MigrationParams<Database.Database>): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=044-add-workflow-notification-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"044-add-workflow-notification-events.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/migrations/044-add-workflow-notification-events.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,wBAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB3F;AAED,wBAAsB,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7F"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 044: Add workflow notification event columns to settings table.
|
|
3
|
+
*
|
|
4
|
+
* Adds three new notification event type filter columns for scheduled
|
|
5
|
+
* workflow execution events: started, completed, and failed.
|
|
6
|
+
* All default to 1 (enabled).
|
|
7
|
+
*/
|
|
8
|
+
export async function up({ context: db }) {
|
|
9
|
+
const columns = db.pragma('table_info(settings)');
|
|
10
|
+
if (!columns.some((c) => c.name === 'notif_evt_workflow_started')) {
|
|
11
|
+
db.exec('ALTER TABLE settings ADD COLUMN notif_evt_workflow_started INTEGER NOT NULL DEFAULT 1');
|
|
12
|
+
}
|
|
13
|
+
if (!columns.some((c) => c.name === 'notif_evt_workflow_completed')) {
|
|
14
|
+
db.exec('ALTER TABLE settings ADD COLUMN notif_evt_workflow_completed INTEGER NOT NULL DEFAULT 1');
|
|
15
|
+
}
|
|
16
|
+
if (!columns.some((c) => c.name === 'notif_evt_workflow_failed')) {
|
|
17
|
+
db.exec('ALTER TABLE settings ADD COLUMN notif_evt_workflow_failed INTEGER NOT NULL DEFAULT 1');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export async function down({ context: db }) {
|
|
21
|
+
void db;
|
|
22
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 045: Create scheduled_workflows and workflow_executions tables.
|
|
3
|
+
*
|
|
4
|
+
* Creates the persistence schema for the scheduled-workflows feature:
|
|
5
|
+
* - scheduled_workflows: Stores workflow definitions with cron schedules
|
|
6
|
+
* - workflow_executions: Stores execution history for each workflow run
|
|
7
|
+
*
|
|
8
|
+
* Uses CREATE TABLE IF NOT EXISTS and CREATE INDEX IF NOT EXISTS for idempotency.
|
|
9
|
+
*/
|
|
10
|
+
import type { MigrationParams } from 'umzug';
|
|
11
|
+
import type Database from 'better-sqlite3';
|
|
12
|
+
export declare function up({ context: db }: MigrationParams<Database.Database>): Promise<void>;
|
|
13
|
+
export declare function down({ context: db }: MigrationParams<Database.Database>): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=045-create-scheduled-workflows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"045-create-scheduled-workflows.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/migrations/045-create-scheduled-workflows.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,wBAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAoD3F;AAED,wBAAsB,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7F"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 045: Create scheduled_workflows and workflow_executions tables.
|
|
3
|
+
*
|
|
4
|
+
* Creates the persistence schema for the scheduled-workflows feature:
|
|
5
|
+
* - scheduled_workflows: Stores workflow definitions with cron schedules
|
|
6
|
+
* - workflow_executions: Stores execution history for each workflow run
|
|
7
|
+
*
|
|
8
|
+
* Uses CREATE TABLE IF NOT EXISTS and CREATE INDEX IF NOT EXISTS for idempotency.
|
|
9
|
+
*/
|
|
10
|
+
export async function up({ context: db }) {
|
|
11
|
+
db.exec(`
|
|
12
|
+
CREATE TABLE IF NOT EXISTS scheduled_workflows (
|
|
13
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
14
|
+
name TEXT NOT NULL,
|
|
15
|
+
description TEXT,
|
|
16
|
+
prompt TEXT NOT NULL,
|
|
17
|
+
tool_constraints TEXT,
|
|
18
|
+
cron_expression TEXT,
|
|
19
|
+
timezone TEXT,
|
|
20
|
+
enabled INTEGER NOT NULL DEFAULT 1,
|
|
21
|
+
last_run_at INTEGER,
|
|
22
|
+
next_run_at INTEGER,
|
|
23
|
+
repository_path TEXT NOT NULL,
|
|
24
|
+
deleted_at INTEGER,
|
|
25
|
+
created_at INTEGER NOT NULL,
|
|
26
|
+
updated_at INTEGER NOT NULL,
|
|
27
|
+
UNIQUE(name, repository_path)
|
|
28
|
+
)
|
|
29
|
+
`);
|
|
30
|
+
db.exec(`
|
|
31
|
+
CREATE TABLE IF NOT EXISTS workflow_executions (
|
|
32
|
+
id TEXT PRIMARY KEY NOT NULL,
|
|
33
|
+
workflow_id TEXT NOT NULL,
|
|
34
|
+
trigger_type TEXT NOT NULL,
|
|
35
|
+
status TEXT NOT NULL,
|
|
36
|
+
started_at INTEGER NOT NULL,
|
|
37
|
+
completed_at INTEGER,
|
|
38
|
+
duration_ms INTEGER,
|
|
39
|
+
output_summary TEXT,
|
|
40
|
+
error_message TEXT,
|
|
41
|
+
created_at INTEGER NOT NULL,
|
|
42
|
+
updated_at INTEGER NOT NULL,
|
|
43
|
+
FOREIGN KEY (workflow_id) REFERENCES scheduled_workflows(id)
|
|
44
|
+
)
|
|
45
|
+
`);
|
|
46
|
+
db.exec(`
|
|
47
|
+
CREATE INDEX IF NOT EXISTS idx_workflow_executions_workflow_id
|
|
48
|
+
ON workflow_executions(workflow_id)
|
|
49
|
+
`);
|
|
50
|
+
db.exec(`
|
|
51
|
+
CREATE INDEX IF NOT EXISTS idx_workflow_executions_started_at
|
|
52
|
+
ON workflow_executions(started_at)
|
|
53
|
+
`);
|
|
54
|
+
db.exec(`
|
|
55
|
+
CREATE INDEX IF NOT EXISTS idx_workflow_executions_status_started
|
|
56
|
+
ON workflow_executions(status, started_at)
|
|
57
|
+
`);
|
|
58
|
+
}
|
|
59
|
+
export async function down({ context: db }) {
|
|
60
|
+
db.exec('DROP INDEX IF EXISTS idx_workflow_executions_status_started');
|
|
61
|
+
db.exec('DROP INDEX IF EXISTS idx_workflow_executions_started_at');
|
|
62
|
+
db.exec('DROP INDEX IF EXISTS idx_workflow_executions_workflow_id');
|
|
63
|
+
db.exec('DROP TABLE IF EXISTS workflow_executions');
|
|
64
|
+
db.exec('DROP TABLE IF EXISTS scheduled_workflows');
|
|
65
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 046: Add feature_flag_scheduled_workflows column to settings table.
|
|
3
|
+
*
|
|
4
|
+
* Adds a boolean (INTEGER 0/1) column for the scheduled workflows feature flag.
|
|
5
|
+
* Defaults to 0 (disabled).
|
|
6
|
+
*/
|
|
7
|
+
import type { MigrationParams } from 'umzug';
|
|
8
|
+
import type Database from 'better-sqlite3';
|
|
9
|
+
export declare function up({ context: db }: MigrationParams<Database.Database>): Promise<void>;
|
|
10
|
+
export declare function down({ context: db }: MigrationParams<Database.Database>): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=046-add-feature-flag-scheduled-workflows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"046-add-feature-flag-scheduled-workflows.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/persistence/sqlite/migrations/046-add-feature-flag-scheduled-workflows.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,wBAAsB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3F;AAED,wBAAsB,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7F"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration 046: Add feature_flag_scheduled_workflows column to settings table.
|
|
3
|
+
*
|
|
4
|
+
* Adds a boolean (INTEGER 0/1) column for the scheduled workflows feature flag.
|
|
5
|
+
* Defaults to 0 (disabled).
|
|
6
|
+
*/
|
|
7
|
+
export async function up({ context: db }) {
|
|
8
|
+
const columns = db.pragma('table_info(settings)');
|
|
9
|
+
const existing = new Set(columns.map((c) => c.name));
|
|
10
|
+
if (!existing.has('feature_flag_scheduled_workflows')) {
|
|
11
|
+
db.exec('ALTER TABLE settings ADD COLUMN feature_flag_scheduled_workflows INTEGER NOT NULL DEFAULT 0');
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export async function down({ context: db }) {
|
|
15
|
+
// SQLite does not support DROP COLUMN before 3.35.0; column remains but is unused after rollback.
|
|
16
|
+
void db;
|
|
17
|
+
}
|
package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export declare class SQLiteRepositoryRepository implements IRepositoryRepository
|
|
|
16
16
|
remove(id: string): Promise<void>;
|
|
17
17
|
findByPathIncludingDeleted(path: string): Promise<Repository | null>;
|
|
18
18
|
findByRemoteUrl(url: string): Promise<Repository | null>;
|
|
19
|
-
update(id: string, fields: Partial<Pick<Repository, 'name' | 'path' | 'remoteUrl'
|
|
19
|
+
update(id: string, fields: Partial<Pick<Repository, 'name' | 'path' | 'remoteUrl'>>): Promise<Repository>;
|
|
20
20
|
softDelete(id: string): Promise<void>;
|
|
21
21
|
restore(id: string): Promise<void>;
|
|
22
22
|
static normalizeRemoteUrl(url: string): string;
|
package/dist/packages/core/src/infrastructure/repositories/sqlite-repository.repository.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-repository.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-repository.repository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gFAAgF,CAAC;AAC5H,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAOnE,qBACa,0BAA2B,YAAW,qBAAqB;IAC1D,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAYnD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMhD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQpD,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAQ7B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMpE,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IASxD,MAAM,CACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"sqlite-repository.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-repository.repository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gFAAgF,CAAC;AAC5H,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAOnE,qBACa,0BAA2B,YAAW,qBAAqB;IAC1D,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAYnD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMhD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAQpD,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAQ7B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMpE,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IASxD,MAAM,CACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,GAC/D,OAAO,CAAC,UAAU,CAAC;IA+BhB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxC,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAG/C"}
|
|
@@ -23,8 +23,8 @@ let SQLiteRepositoryRepository = SQLiteRepositoryRepository_1 = class SQLiteRepo
|
|
|
23
23
|
async create(repository) {
|
|
24
24
|
const row = toDatabase(repository);
|
|
25
25
|
const insertStmt = this.db.prepare(`
|
|
26
|
-
INSERT OR IGNORE INTO repositories (id, name, path,
|
|
27
|
-
VALUES (@id, @name, @path, @
|
|
26
|
+
INSERT OR IGNORE INTO repositories (id, name, path, created_at, updated_at)
|
|
27
|
+
VALUES (@id, @name, @path, @created_at, @updated_at)
|
|
28
28
|
`);
|
|
29
29
|
insertStmt.run(row);
|
|
30
30
|
const selectStmt = this.db.prepare('SELECT * FROM repositories WHERE path = ?');
|
|
@@ -77,10 +77,6 @@ let SQLiteRepositoryRepository = SQLiteRepositoryRepository_1 = class SQLiteRepo
|
|
|
77
77
|
setClauses.push('remote_url = ?');
|
|
78
78
|
values.push(fields.remoteUrl);
|
|
79
79
|
}
|
|
80
|
-
if (fields.specStorageMode !== undefined) {
|
|
81
|
-
setClauses.push('spec_storage_mode = ?');
|
|
82
|
-
values.push(fields.specStorageMode);
|
|
83
|
-
}
|
|
84
80
|
values.push(id);
|
|
85
81
|
const stmt = this.db.prepare(`UPDATE repositories SET ${setClauses.join(', ')} WHERE id = ?`);
|
|
86
82
|
const result = stmt.run(...values);
|