@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
|
@@ -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-workflow-execution.repository.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Workflow Execution Repository Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implements IWorkflowExecutionRepository using SQLite database.
|
|
5
|
+
* Uses prepared statements to prevent SQL injection.
|
|
6
|
+
*/
|
|
7
|
+
import type Database from 'better-sqlite3';
|
|
8
|
+
import type { IWorkflowExecutionRepository } from '../../application/ports/output/repositories/workflow-execution-repository.interface.js';
|
|
9
|
+
import type { WorkflowExecution, WorkflowExecutionStatus } from '../../domain/generated/output.js';
|
|
10
|
+
/**
|
|
11
|
+
* SQLite implementation of IWorkflowExecutionRepository.
|
|
12
|
+
* Manages WorkflowExecution persistence with CRUD and retention cleanup.
|
|
13
|
+
*/
|
|
14
|
+
export declare class SQLiteWorkflowExecutionRepository implements IWorkflowExecutionRepository {
|
|
15
|
+
private readonly db;
|
|
16
|
+
constructor(db: Database.Database);
|
|
17
|
+
create(execution: WorkflowExecution): Promise<void>;
|
|
18
|
+
findById(id: string): Promise<WorkflowExecution | null>;
|
|
19
|
+
findByWorkflowId(workflowId: string, limit?: number): Promise<WorkflowExecution[]>;
|
|
20
|
+
findByStatus(status: WorkflowExecutionStatus): Promise<WorkflowExecution[]>;
|
|
21
|
+
update(execution: WorkflowExecution): Promise<void>;
|
|
22
|
+
deleteOlderThan(date: Date): Promise<number>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=sqlite-workflow-execution.repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-workflow-execution.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-workflow-execution.repository.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wFAAwF,CAAC;AAC3I,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAOnG;;;GAGG;AACH,qBACa,iCAAkC,YAAW,4BAA4B;IACxE,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAWvD,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAalF,YAAY,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAS3E,MAAM,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnD,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CAKnD"}
|
package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow-execution.repository.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Workflow Execution Repository Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implements IWorkflowExecutionRepository using SQLite database.
|
|
5
|
+
* Uses prepared statements to prevent SQL injection.
|
|
6
|
+
*/
|
|
7
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
8
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
10
|
+
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;
|
|
11
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
12
|
+
};
|
|
13
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
14
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
15
|
+
};
|
|
16
|
+
import { injectable } from 'tsyringe';
|
|
17
|
+
import { toDatabase, fromDatabase, } from '../persistence/sqlite/mappers/workflow-execution.mapper.js';
|
|
18
|
+
/**
|
|
19
|
+
* SQLite implementation of IWorkflowExecutionRepository.
|
|
20
|
+
* Manages WorkflowExecution persistence with CRUD and retention cleanup.
|
|
21
|
+
*/
|
|
22
|
+
let SQLiteWorkflowExecutionRepository = class SQLiteWorkflowExecutionRepository {
|
|
23
|
+
db;
|
|
24
|
+
constructor(db) {
|
|
25
|
+
this.db = db;
|
|
26
|
+
}
|
|
27
|
+
async create(execution) {
|
|
28
|
+
const row = toDatabase(execution);
|
|
29
|
+
const stmt = this.db.prepare(`
|
|
30
|
+
INSERT INTO workflow_executions (
|
|
31
|
+
id, workflow_id, trigger_type, status,
|
|
32
|
+
started_at, completed_at, duration_ms,
|
|
33
|
+
output_summary, error_message,
|
|
34
|
+
created_at, updated_at
|
|
35
|
+
) VALUES (
|
|
36
|
+
@id, @workflow_id, @trigger_type, @status,
|
|
37
|
+
@started_at, @completed_at, @duration_ms,
|
|
38
|
+
@output_summary, @error_message,
|
|
39
|
+
@created_at, @updated_at
|
|
40
|
+
)
|
|
41
|
+
`);
|
|
42
|
+
stmt.run(row);
|
|
43
|
+
}
|
|
44
|
+
async findById(id) {
|
|
45
|
+
const stmt = this.db.prepare('SELECT * FROM workflow_executions WHERE id = ?');
|
|
46
|
+
const row = stmt.get(id);
|
|
47
|
+
if (!row) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
return fromDatabase(row);
|
|
51
|
+
}
|
|
52
|
+
async findByWorkflowId(workflowId, limit) {
|
|
53
|
+
const sql = limit
|
|
54
|
+
? 'SELECT * FROM workflow_executions WHERE workflow_id = ? ORDER BY started_at DESC LIMIT ?'
|
|
55
|
+
: 'SELECT * FROM workflow_executions WHERE workflow_id = ? ORDER BY started_at DESC';
|
|
56
|
+
const stmt = this.db.prepare(sql);
|
|
57
|
+
const rows = (limit ? stmt.all(workflowId, limit) : stmt.all(workflowId));
|
|
58
|
+
return rows.map(fromDatabase);
|
|
59
|
+
}
|
|
60
|
+
async findByStatus(status) {
|
|
61
|
+
const stmt = this.db.prepare('SELECT * FROM workflow_executions WHERE status = ? ORDER BY started_at ASC');
|
|
62
|
+
const rows = stmt.all(status);
|
|
63
|
+
return rows.map(fromDatabase);
|
|
64
|
+
}
|
|
65
|
+
async update(execution) {
|
|
66
|
+
const row = toDatabase(execution);
|
|
67
|
+
const stmt = this.db.prepare(`
|
|
68
|
+
UPDATE workflow_executions SET
|
|
69
|
+
workflow_id = @workflow_id,
|
|
70
|
+
trigger_type = @trigger_type,
|
|
71
|
+
status = @status,
|
|
72
|
+
started_at = @started_at,
|
|
73
|
+
completed_at = @completed_at,
|
|
74
|
+
duration_ms = @duration_ms,
|
|
75
|
+
output_summary = @output_summary,
|
|
76
|
+
error_message = @error_message,
|
|
77
|
+
updated_at = @updated_at
|
|
78
|
+
WHERE id = @id
|
|
79
|
+
`);
|
|
80
|
+
stmt.run(row);
|
|
81
|
+
}
|
|
82
|
+
async deleteOlderThan(date) {
|
|
83
|
+
const stmt = this.db.prepare('DELETE FROM workflow_executions WHERE started_at < ?');
|
|
84
|
+
const result = stmt.run(date.getTime());
|
|
85
|
+
return result.changes;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
SQLiteWorkflowExecutionRepository = __decorate([
|
|
89
|
+
injectable(),
|
|
90
|
+
__metadata("design:paramtypes", [Object])
|
|
91
|
+
], SQLiteWorkflowExecutionRepository);
|
|
92
|
+
export { SQLiteWorkflowExecutionRepository };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Workflow Repository Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implements IWorkflowRepository using SQLite database.
|
|
5
|
+
* Uses prepared statements to prevent SQL injection.
|
|
6
|
+
* Excludes soft-deleted workflows (deleted_at IS NOT NULL) from queries by default.
|
|
7
|
+
*/
|
|
8
|
+
import type Database from 'better-sqlite3';
|
|
9
|
+
import type { IWorkflowRepository, WorkflowListFilters } from '../../application/ports/output/repositories/workflow-repository.interface.js';
|
|
10
|
+
import type { ScheduledWorkflow } from '../../domain/generated/output.js';
|
|
11
|
+
/**
|
|
12
|
+
* SQLite implementation of IWorkflowRepository.
|
|
13
|
+
* Manages ScheduledWorkflow persistence with CRUD operations.
|
|
14
|
+
*/
|
|
15
|
+
export declare class SQLiteWorkflowRepository implements IWorkflowRepository {
|
|
16
|
+
private readonly db;
|
|
17
|
+
constructor(db: Database.Database);
|
|
18
|
+
create(workflow: ScheduledWorkflow): Promise<void>;
|
|
19
|
+
findById(id: string): Promise<ScheduledWorkflow | null>;
|
|
20
|
+
findByName(name: string, repositoryPath: string): Promise<ScheduledWorkflow | null>;
|
|
21
|
+
findEnabled(): Promise<ScheduledWorkflow[]>;
|
|
22
|
+
list(filters?: WorkflowListFilters): Promise<ScheduledWorkflow[]>;
|
|
23
|
+
update(workflow: ScheduledWorkflow): Promise<void>;
|
|
24
|
+
softDelete(id: string): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=sqlite-workflow.repository.d.ts.map
|
package/dist/packages/core/src/infrastructure/repositories/sqlite-workflow.repository.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-workflow.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-workflow.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,8EAA8E,CAAC;AACtF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAO1E;;;GAGG;AACH,qBACa,wBAAyB,YAAW,mBAAmB;IACtD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBlD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAavD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAenF,WAAW,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAS3C,IAAI,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA2BjE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBlD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO5C"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Workflow Repository Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implements IWorkflowRepository using SQLite database.
|
|
5
|
+
* Uses prepared statements to prevent SQL injection.
|
|
6
|
+
* Excludes soft-deleted workflows (deleted_at IS NOT NULL) from queries by default.
|
|
7
|
+
*/
|
|
8
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
9
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
10
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
11
|
+
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;
|
|
12
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13
|
+
};
|
|
14
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
15
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
16
|
+
};
|
|
17
|
+
import { injectable } from 'tsyringe';
|
|
18
|
+
import { toDatabase, fromDatabase, } from '../persistence/sqlite/mappers/workflow.mapper.js';
|
|
19
|
+
/**
|
|
20
|
+
* SQLite implementation of IWorkflowRepository.
|
|
21
|
+
* Manages ScheduledWorkflow persistence with CRUD operations.
|
|
22
|
+
*/
|
|
23
|
+
let SQLiteWorkflowRepository = class SQLiteWorkflowRepository {
|
|
24
|
+
db;
|
|
25
|
+
constructor(db) {
|
|
26
|
+
this.db = db;
|
|
27
|
+
}
|
|
28
|
+
async create(workflow) {
|
|
29
|
+
const row = toDatabase(workflow);
|
|
30
|
+
const stmt = this.db.prepare(`
|
|
31
|
+
INSERT INTO scheduled_workflows (
|
|
32
|
+
id, name, description, prompt, tool_constraints,
|
|
33
|
+
cron_expression, timezone, enabled,
|
|
34
|
+
last_run_at, next_run_at,
|
|
35
|
+
repository_path, deleted_at,
|
|
36
|
+
created_at, updated_at
|
|
37
|
+
) VALUES (
|
|
38
|
+
@id, @name, @description, @prompt, @tool_constraints,
|
|
39
|
+
@cron_expression, @timezone, @enabled,
|
|
40
|
+
@last_run_at, @next_run_at,
|
|
41
|
+
@repository_path, @deleted_at,
|
|
42
|
+
@created_at, @updated_at
|
|
43
|
+
)
|
|
44
|
+
`);
|
|
45
|
+
stmt.run(row);
|
|
46
|
+
}
|
|
47
|
+
async findById(id) {
|
|
48
|
+
const stmt = this.db.prepare('SELECT * FROM scheduled_workflows WHERE id = ? AND deleted_at IS NULL');
|
|
49
|
+
const row = stmt.get(id);
|
|
50
|
+
if (!row) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
return fromDatabase(row);
|
|
54
|
+
}
|
|
55
|
+
async findByName(name, repositoryPath) {
|
|
56
|
+
const stmt = this.db.prepare("SELECT * FROM scheduled_workflows WHERE name = ? AND REPLACE(repository_path, '\\', '/') = ? AND deleted_at IS NULL");
|
|
57
|
+
const row = stmt.get(name, repositoryPath.replace(/\\/g, '/'));
|
|
58
|
+
if (!row) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return fromDatabase(row);
|
|
62
|
+
}
|
|
63
|
+
async findEnabled() {
|
|
64
|
+
const stmt = this.db.prepare('SELECT * FROM scheduled_workflows WHERE enabled = 1 AND deleted_at IS NULL ORDER BY created_at ASC');
|
|
65
|
+
const rows = stmt.all();
|
|
66
|
+
return rows.map(fromDatabase);
|
|
67
|
+
}
|
|
68
|
+
async list(filters) {
|
|
69
|
+
const conditions = [];
|
|
70
|
+
const params = [];
|
|
71
|
+
if (!filters?.includeDeleted) {
|
|
72
|
+
conditions.push('deleted_at IS NULL');
|
|
73
|
+
}
|
|
74
|
+
if (filters?.repositoryPath) {
|
|
75
|
+
conditions.push("REPLACE(repository_path, '\\', '/') = ?");
|
|
76
|
+
params.push(filters.repositoryPath.replace(/\\/g, '/'));
|
|
77
|
+
}
|
|
78
|
+
if (filters?.enabled !== undefined) {
|
|
79
|
+
conditions.push('enabled = ?');
|
|
80
|
+
params.push(filters.enabled ? 1 : 0);
|
|
81
|
+
}
|
|
82
|
+
const where = conditions.length > 0 ? ` WHERE ${conditions.join(' AND ')}` : '';
|
|
83
|
+
const stmt = this.db.prepare(`SELECT * FROM scheduled_workflows${where} ORDER BY created_at ASC`);
|
|
84
|
+
const rows = stmt.all(...params);
|
|
85
|
+
return rows.map(fromDatabase);
|
|
86
|
+
}
|
|
87
|
+
async update(workflow) {
|
|
88
|
+
const row = toDatabase(workflow);
|
|
89
|
+
const stmt = this.db.prepare(`
|
|
90
|
+
UPDATE scheduled_workflows SET
|
|
91
|
+
name = @name,
|
|
92
|
+
description = @description,
|
|
93
|
+
prompt = @prompt,
|
|
94
|
+
tool_constraints = @tool_constraints,
|
|
95
|
+
cron_expression = @cron_expression,
|
|
96
|
+
timezone = @timezone,
|
|
97
|
+
enabled = @enabled,
|
|
98
|
+
last_run_at = @last_run_at,
|
|
99
|
+
next_run_at = @next_run_at,
|
|
100
|
+
repository_path = @repository_path,
|
|
101
|
+
deleted_at = @deleted_at,
|
|
102
|
+
updated_at = @updated_at
|
|
103
|
+
WHERE id = @id
|
|
104
|
+
`);
|
|
105
|
+
stmt.run(row);
|
|
106
|
+
}
|
|
107
|
+
async softDelete(id) {
|
|
108
|
+
const now = Date.now();
|
|
109
|
+
const stmt = this.db.prepare('UPDATE scheduled_workflows SET deleted_at = ?, updated_at = ? WHERE id = ?');
|
|
110
|
+
stmt.run(now, now, id);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
SQLiteWorkflowRepository = __decorate([
|
|
114
|
+
injectable(),
|
|
115
|
+
__metadata("design:paramtypes", [Object])
|
|
116
|
+
], SQLiteWorkflowRepository);
|
|
117
|
+
export { SQLiteWorkflowRepository };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAqDrD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,IAG3C,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"evidence.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAqDrD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,IAG3C,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAqJ7E"}
|
package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js
CHANGED
|
@@ -82,8 +82,9 @@ export function createEvidenceNode(executor) {
|
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
84
|
// --- Configuration ---
|
|
85
|
+
// Use feature-level state for commitEvidence; fall back to global for retries config
|
|
86
|
+
const commitEvidence = state.commitEvidence;
|
|
85
87
|
const settings = hasSettings() ? getSettings() : undefined;
|
|
86
|
-
const commitEvidence = settings?.workflow.commitEvidence ?? false;
|
|
87
88
|
const maxRetries = settings?.workflow.evidenceRetries ?? DEFAULT_MAX_RETRIES;
|
|
88
89
|
const options = buildExecutorOptions(state);
|
|
89
90
|
const tasks = parseTasks(state.specDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fast-implement.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;
|
|
1
|
+
{"version":3,"file":"fast-implement.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAcrD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,IAGhD,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CA6F7E"}
|