@open-mercato/core 0.4.2-canary-f821f89ef6 → 0.4.2-canary-3b5064ce72
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/dist/generated/entities/notification/index.js +57 -0
- package/dist/generated/entities/notification/index.js.map +7 -0
- package/dist/generated/entities.ids.generated.js +5 -2
- package/dist/generated/entities.ids.generated.js.map +2 -2
- package/dist/generated/entity-fields-registry.js +2 -2
- package/dist/generated/entity-fields-registry.js.map +2 -2
- package/dist/modules/api_docs/frontend/docs/api/page.js +3 -2
- package/dist/modules/api_docs/frontend/docs/api/page.js.map +2 -2
- package/dist/modules/api_keys/backend/api-keys/page.js +1 -1
- package/dist/modules/api_keys/backend/api-keys/page.js.map +2 -2
- package/dist/modules/attachments/components/AttachmentLibrary.js +4 -0
- package/dist/modules/attachments/components/AttachmentLibrary.js.map +2 -2
- package/dist/modules/attachments/components/AttachmentPartitionSettings.js +2 -0
- package/dist/modules/attachments/components/AttachmentPartitionSettings.js.map +2 -2
- package/dist/modules/auth/api/admin/nav.js +4 -3
- package/dist/modules/auth/api/admin/nav.js.map +2 -2
- package/dist/modules/auth/api/login.js +25 -6
- package/dist/modules/auth/api/login.js.map +2 -2
- package/dist/modules/auth/api/profile/route.js +157 -0
- package/dist/modules/auth/api/profile/route.js.map +7 -0
- package/dist/modules/auth/api/reset/confirm.js +25 -2
- package/dist/modules/auth/api/reset/confirm.js.map +2 -2
- package/dist/modules/auth/api/reset.js +23 -0
- package/dist/modules/auth/api/reset.js.map +2 -2
- package/dist/modules/auth/api/sidebar/preferences/route.js +14 -9
- package/dist/modules/auth/api/sidebar/preferences/route.js.map +2 -2
- package/dist/modules/auth/api/users/route.js +4 -2
- package/dist/modules/auth/api/users/route.js.map +2 -2
- package/dist/modules/auth/backend/auth/profile/page.js +141 -0
- package/dist/modules/auth/backend/auth/profile/page.js.map +7 -0
- package/dist/modules/auth/backend/auth/profile/page.meta.js +13 -0
- package/dist/modules/auth/backend/auth/profile/page.meta.js.map +7 -0
- package/dist/modules/auth/backend/roles/[id]/edit/page.js +4 -1
- package/dist/modules/auth/backend/roles/[id]/edit/page.js.map +2 -2
- package/dist/modules/auth/backend/roles/page.js +3 -3
- package/dist/modules/auth/backend/roles/page.js.map +2 -2
- package/dist/modules/auth/backend/users/[id]/edit/page.js +18 -3
- package/dist/modules/auth/backend/users/[id]/edit/page.js.map +2 -2
- package/dist/modules/auth/backend/users/create/page.js +15 -2
- package/dist/modules/auth/backend/users/create/page.js.map +2 -2
- package/dist/modules/auth/backend/users/page.js +3 -3
- package/dist/modules/auth/backend/users/page.js.map +2 -2
- package/dist/modules/auth/cli.js +25 -11
- package/dist/modules/auth/cli.js.map +2 -2
- package/dist/modules/auth/commands/users.js +59 -2
- package/dist/modules/auth/commands/users.js.map +2 -2
- package/dist/modules/auth/data/validators.js +6 -3
- package/dist/modules/auth/data/validators.js.map +2 -2
- package/dist/modules/auth/frontend/login.js +112 -3
- package/dist/modules/auth/frontend/login.js.map +2 -2
- package/dist/modules/auth/frontend/reset/[token]/page.js +20 -10
- package/dist/modules/auth/frontend/reset/[token]/page.js.map +2 -2
- package/dist/modules/auth/lib/setup-app.js +42 -8
- package/dist/modules/auth/lib/setup-app.js.map +2 -2
- package/dist/modules/auth/notifications.js +112 -0
- package/dist/modules/auth/notifications.js.map +7 -0
- package/dist/modules/auth/services/authService.js +24 -3
- package/dist/modules/auth/services/authService.js.map +2 -2
- package/dist/modules/business_rules/api/execute/route.js +7 -1
- package/dist/modules/business_rules/api/execute/route.js.map +2 -2
- package/dist/modules/business_rules/backend/rules/page.js +4 -0
- package/dist/modules/business_rules/backend/rules/page.js.map +2 -2
- package/dist/modules/business_rules/backend/sets/page.js +3 -0
- package/dist/modules/business_rules/backend/sets/page.js.map +2 -2
- package/dist/modules/business_rules/cli.js +2 -1
- package/dist/modules/business_rules/cli.js.map +2 -2
- package/dist/modules/business_rules/data/validators.js +0 -34
- package/dist/modules/business_rules/data/validators.js.map +2 -2
- package/dist/modules/business_rules/index.js +1 -21
- package/dist/modules/business_rules/index.js.map +2 -2
- package/dist/modules/business_rules/lib/rule-engine.js +34 -185
- package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
- package/dist/modules/business_rules/notifications.js +28 -0
- package/dist/modules/business_rules/notifications.js.map +7 -0
- package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js +37 -0
- package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js.map +7 -0
- package/dist/modules/catalog/components/PriceKindSettings.js +2 -0
- package/dist/modules/catalog/components/PriceKindSettings.js.map +2 -2
- package/dist/modules/catalog/components/categories/CategoriesDataTable.js +2 -2
- package/dist/modules/catalog/components/categories/CategoriesDataTable.js.map +2 -2
- package/dist/modules/catalog/components/products/ProductsDataTable.js +2 -0
- package/dist/modules/catalog/components/products/ProductsDataTable.js.map +2 -2
- package/dist/modules/catalog/notifications.js +28 -0
- package/dist/modules/catalog/notifications.js.map +7 -0
- package/dist/modules/catalog/subscribers/low-stock-notification.js +38 -0
- package/dist/modules/catalog/subscribers/low-stock-notification.js.map +7 -0
- package/dist/modules/configs/cli.js +6 -0
- package/dist/modules/configs/cli.js.map +2 -2
- package/dist/modules/configs/components/CachePanel.js +4 -4
- package/dist/modules/configs/components/CachePanel.js.map +2 -2
- package/dist/modules/configs/lib/system-status.js +48 -1
- package/dist/modules/configs/lib/system-status.js.map +2 -2
- package/dist/modules/configs/lib/upgrade-actions.js +18 -0
- package/dist/modules/configs/lib/upgrade-actions.js.map +2 -2
- package/dist/modules/currencies/backend/currencies/page.js +3 -0
- package/dist/modules/currencies/backend/currencies/page.js.map +2 -2
- package/dist/modules/currencies/backend/exchange-rates/page.js +2 -0
- package/dist/modules/currencies/backend/exchange-rates/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies/page.js +3 -0
- package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/page.js +3 -0
- package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/people/page.js +3 -0
- package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
- package/dist/modules/customers/commands/deals.js +31 -0
- package/dist/modules/customers/commands/deals.js.map +2 -2
- package/dist/modules/customers/components/CustomerTodosTable.js +1 -0
- package/dist/modules/customers/components/CustomerTodosTable.js.map +2 -2
- package/dist/modules/customers/notifications.js +48 -0
- package/dist/modules/customers/notifications.js.map +7 -0
- package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js +2 -1
- package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js.map +2 -2
- package/dist/modules/customers/widgets/dashboard/new-customers/widget.js +2 -1
- package/dist/modules/customers/widgets/dashboard/new-customers/widget.js.map +2 -2
- package/dist/modules/customers/widgets/dashboard/new-deals/widget.js +2 -1
- package/dist/modules/customers/widgets/dashboard/new-deals/widget.js.map +2 -2
- package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js +2 -1
- package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js.map +2 -2
- package/dist/modules/dashboards/cli.js +44 -5
- package/dist/modules/dashboards/cli.js.map +2 -2
- package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +16 -11
- package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +3 -3
- package/dist/modules/dashboards/lib/role-widgets.js +58 -0
- package/dist/modules/dashboards/lib/role-widgets.js.map +7 -0
- package/dist/modules/dashboards/services/widgetDataService.js +139 -3
- package/dist/modules/dashboards/services/widgetDataService.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js +2 -1
- package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js +2 -1
- package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js +2 -1
- package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js +2 -1
- package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js +2 -1
- package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js +2 -1
- package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js +2 -1
- package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js +2 -1
- package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js +2 -1
- package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js +2 -1
- package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js.map +2 -2
- package/dist/modules/dictionaries/components/DictionaryTable.js +2 -0
- package/dist/modules/dictionaries/components/DictionaryTable.js.map +2 -2
- package/dist/modules/directory/api/get/tenants/lookup.js +70 -0
- package/dist/modules/directory/api/get/tenants/lookup.js.map +7 -0
- package/dist/modules/directory/backend/directory/organizations/page.js +2 -2
- package/dist/modules/directory/backend/directory/organizations/page.js.map +2 -2
- package/dist/modules/directory/backend/directory/tenants/page.js +2 -2
- package/dist/modules/directory/backend/directory/tenants/page.js.map +2 -2
- package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js +2 -2
- package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js.map +2 -2
- package/dist/modules/entities/components/SystemEntitiesTable.js +1 -1
- package/dist/modules/entities/components/SystemEntitiesTable.js.map +2 -2
- package/dist/modules/entities/components/UserEntitiesTable.js +2 -2
- package/dist/modules/entities/components/UserEntitiesTable.js.map +2 -2
- package/dist/modules/feature_toggles/components/FeatureTogglesTable.js +3 -3
- package/dist/modules/feature_toggles/components/FeatureTogglesTable.js.map +2 -2
- package/dist/modules/feature_toggles/components/OverridesTable.js +1 -1
- package/dist/modules/feature_toggles/components/OverridesTable.js.map +2 -2
- package/dist/modules/notifications/acl.js +11 -0
- package/dist/modules/notifications/acl.js.map +7 -0
- package/dist/modules/notifications/api/[id]/action/route.js +74 -0
- package/dist/modules/notifications/api/[id]/action/route.js.map +7 -0
- package/dist/modules/notifications/api/[id]/dismiss/route.js +15 -0
- package/dist/modules/notifications/api/[id]/dismiss/route.js.map +7 -0
- package/dist/modules/notifications/api/[id]/read/route.js +15 -0
- package/dist/modules/notifications/api/[id]/read/route.js.map +7 -0
- package/dist/modules/notifications/api/[id]/restore/route.js +53 -0
- package/dist/modules/notifications/api/[id]/restore/route.js.map +7 -0
- package/dist/modules/notifications/api/batch/route.js +17 -0
- package/dist/modules/notifications/api/batch/route.js.map +7 -0
- package/dist/modules/notifications/api/feature/route.js +17 -0
- package/dist/modules/notifications/api/feature/route.js.map +7 -0
- package/dist/modules/notifications/api/mark-all-read/route.js +35 -0
- package/dist/modules/notifications/api/mark-all-read/route.js.map +7 -0
- package/dist/modules/notifications/api/openapi.js +76 -0
- package/dist/modules/notifications/api/openapi.js.map +7 -0
- package/dist/modules/notifications/api/role/route.js +17 -0
- package/dist/modules/notifications/api/role/route.js.map +7 -0
- package/dist/modules/notifications/api/route.js +85 -0
- package/dist/modules/notifications/api/route.js.map +7 -0
- package/dist/modules/notifications/api/settings/route.js +155 -0
- package/dist/modules/notifications/api/settings/route.js.map +7 -0
- package/dist/modules/notifications/api/unread-count/route.js +38 -0
- package/dist/modules/notifications/api/unread-count/route.js.map +7 -0
- package/dist/modules/notifications/backend/config/notifications/page.js +10 -0
- package/dist/modules/notifications/backend/config/notifications/page.js.map +7 -0
- package/dist/modules/notifications/backend/config/notifications/page.meta.js +24 -0
- package/dist/modules/notifications/backend/config/notifications/page.meta.js.map +7 -0
- package/dist/modules/notifications/cli.js +16 -0
- package/dist/modules/notifications/cli.js.map +7 -0
- package/dist/modules/notifications/data/entities.js +112 -0
- package/dist/modules/notifications/data/entities.js.map +7 -0
- package/dist/modules/notifications/data/validators.js +98 -0
- package/dist/modules/notifications/data/validators.js.map +7 -0
- package/dist/modules/notifications/di.js +13 -0
- package/dist/modules/notifications/di.js.map +7 -0
- package/dist/modules/notifications/emails/NotificationEmail.js +58 -0
- package/dist/modules/notifications/emails/NotificationEmail.js.map +7 -0
- package/dist/modules/notifications/frontend/NotificationInboxPageClient.js +44 -0
- package/dist/modules/notifications/frontend/NotificationInboxPageClient.js.map +7 -0
- package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js +220 -0
- package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js.map +7 -0
- package/dist/modules/notifications/index.js +14 -0
- package/dist/modules/notifications/index.js.map +7 -0
- package/dist/modules/notifications/lib/deliveryConfig.js +107 -0
- package/dist/modules/notifications/lib/deliveryConfig.js.map +7 -0
- package/dist/modules/notifications/lib/deliveryStrategies.js +14 -0
- package/dist/modules/notifications/lib/deliveryStrategies.js.map +7 -0
- package/dist/modules/notifications/lib/events.js +12 -0
- package/dist/modules/notifications/lib/events.js.map +7 -0
- package/dist/modules/notifications/lib/notificationBuilder.js +66 -0
- package/dist/modules/notifications/lib/notificationBuilder.js.map +7 -0
- package/dist/modules/notifications/lib/notificationFactory.js +54 -0
- package/dist/modules/notifications/lib/notificationFactory.js.map +7 -0
- package/dist/modules/notifications/lib/notificationMapper.js +34 -0
- package/dist/modules/notifications/lib/notificationMapper.js.map +7 -0
- package/dist/modules/notifications/lib/notificationRecipients.js +35 -0
- package/dist/modules/notifications/lib/notificationRecipients.js.map +7 -0
- package/dist/modules/notifications/lib/notificationService.js +279 -0
- package/dist/modules/notifications/lib/notificationService.js.map +7 -0
- package/dist/modules/notifications/lib/routeHelpers.js +101 -0
- package/dist/modules/notifications/lib/routeHelpers.js.map +7 -0
- package/dist/modules/notifications/lib/safeHref.js +24 -0
- package/dist/modules/notifications/lib/safeHref.js.map +7 -0
- package/dist/modules/notifications/migrations/Migration20260123000001.js +70 -0
- package/dist/modules/notifications/migrations/Migration20260123000001.js.map +7 -0
- package/dist/modules/notifications/migrations/Migration20260126150000.js +37 -0
- package/dist/modules/notifications/migrations/Migration20260126150000.js.map +7 -0
- package/dist/modules/notifications/migrations/Migration20260129082610.js +13 -0
- package/dist/modules/notifications/migrations/Migration20260129082610.js.map +7 -0
- package/dist/modules/notifications/subscribers/deliver-notification.js +165 -0
- package/dist/modules/notifications/subscribers/deliver-notification.js.map +7 -0
- package/dist/modules/notifications/workers/create-notification.worker.js +70 -0
- package/dist/modules/notifications/workers/create-notification.worker.js.map +7 -0
- package/dist/modules/planner/backend/planner/availability-rulesets/page.js +2 -2
- package/dist/modules/planner/backend/planner/availability-rulesets/page.js.map +2 -2
- package/dist/modules/query_index/cli.js +63 -7
- package/dist/modules/query_index/cli.js.map +2 -2
- package/dist/modules/query_index/components/QueryIndexesTable.js +7 -1
- package/dist/modules/query_index/components/QueryIndexesTable.js.map +2 -2
- package/dist/modules/resources/backend/resources/resource-types/page.js +2 -2
- package/dist/modules/resources/backend/resources/resource-types/page.js.map +2 -2
- package/dist/modules/resources/backend/resources/resources/page.js +2 -2
- package/dist/modules/resources/backend/resources/resources/page.js.map +2 -2
- package/dist/modules/sales/acl.js +0 -1
- package/dist/modules/sales/acl.js.map +2 -2
- package/dist/modules/sales/backend/sales/channels/offers/page.js +2 -0
- package/dist/modules/sales/backend/sales/channels/offers/page.js.map +2 -2
- package/dist/modules/sales/backend/sales/channels/page.js +2 -0
- package/dist/modules/sales/backend/sales/channels/page.js.map +2 -2
- package/dist/modules/sales/backend/sales/documents/[id]/page.js +0 -12
- package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
- package/dist/modules/sales/commands/documents.js +53 -62
- package/dist/modules/sales/commands/documents.js.map +2 -2
- package/dist/modules/sales/commands/payments.js +26 -0
- package/dist/modules/sales/commands/payments.js.map +2 -2
- package/dist/modules/sales/components/AdjustmentKindSettings.js +2 -2
- package/dist/modules/sales/components/AdjustmentKindSettings.js.map +2 -2
- package/dist/modules/sales/components/PaymentMethodsSettings.js +2 -2
- package/dist/modules/sales/components/PaymentMethodsSettings.js.map +2 -2
- package/dist/modules/sales/components/ShippingMethodsSettings.js +2 -2
- package/dist/modules/sales/components/ShippingMethodsSettings.js.map +2 -2
- package/dist/modules/sales/components/TaxRatesSettings.js +2 -2
- package/dist/modules/sales/components/TaxRatesSettings.js.map +2 -2
- package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js +2 -0
- package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js.map +2 -2
- package/dist/modules/sales/components/documents/AdjustmentsSection.js +2 -0
- package/dist/modules/sales/components/documents/AdjustmentsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/PaymentsSection.js +2 -1
- package/dist/modules/sales/components/documents/PaymentsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesDocumentsTable.js +2 -0
- package/dist/modules/sales/components/documents/SalesDocumentsTable.js.map +2 -2
- package/dist/modules/sales/lib/dictionaries.js +0 -3
- package/dist/modules/sales/lib/dictionaries.js.map +2 -2
- package/dist/modules/sales/notifications.client.js +51 -0
- package/dist/modules/sales/notifications.client.js.map +7 -0
- package/dist/modules/sales/notifications.js +88 -0
- package/dist/modules/sales/notifications.js.map +7 -0
- package/dist/modules/sales/subscribers/quote-expiring-notification.js +38 -0
- package/dist/modules/sales/subscribers/quote-expiring-notification.js.map +7 -0
- package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js +137 -0
- package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js.map +7 -0
- package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js +137 -0
- package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js.map +7 -0
- package/dist/modules/sales/widgets/notifications/index.js +7 -0
- package/dist/modules/sales/widgets/notifications/index.js.map +7 -0
- package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js +60 -0
- package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js.map +7 -0
- package/dist/modules/staff/backend/staff/team-members/page.js +1 -1
- package/dist/modules/staff/backend/staff/team-members/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/team-roles/page.js +2 -2
- package/dist/modules/staff/backend/staff/team-roles/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js +2 -2
- package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/teams/page.js +2 -2
- package/dist/modules/staff/backend/staff/teams/page.js.map +2 -2
- package/dist/modules/staff/commands/leave-requests.js +79 -0
- package/dist/modules/staff/commands/leave-requests.js.map +2 -2
- package/dist/modules/staff/notifications.js +75 -0
- package/dist/modules/staff/notifications.js.map +7 -0
- package/dist/modules/workflows/acl.js +0 -2
- package/dist/modules/workflows/acl.js.map +2 -2
- package/dist/modules/workflows/api/instances/route.js +6 -18
- package/dist/modules/workflows/api/instances/route.js.map +2 -2
- package/dist/modules/workflows/api/tasks/route.js +1 -6
- package/dist/modules/workflows/api/tasks/route.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/[id]/page.js +1 -9
- package/dist/modules/workflows/backend/definitions/[id]/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/[id]/page.meta.js +1 -1
- package/dist/modules/workflows/backend/definitions/[id]/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/create/page.js +15 -24
- package/dist/modules/workflows/backend/definitions/create/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/create/page.meta.js +1 -1
- package/dist/modules/workflows/backend/definitions/create/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/page.js +5 -0
- package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/visual-editor/page.js +132 -150
- package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js +1 -1
- package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/events/[id]/page.js +1 -1
- package/dist/modules/workflows/backend/events/[id]/page.js.map +2 -2
- package/dist/modules/workflows/backend/events/[id]/page.meta.js +2 -2
- package/dist/modules/workflows/backend/events/[id]/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/instances/[id]/page.meta.js +2 -2
- package/dist/modules/workflows/backend/instances/[id]/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/instances/page.js +3 -0
- package/dist/modules/workflows/backend/instances/page.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/[id]/page.js +1 -1
- package/dist/modules/workflows/backend/tasks/[id]/page.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/[id]/page.meta.js +2 -2
- package/dist/modules/workflows/backend/tasks/[id]/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/page.js +9 -5
- package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
- package/dist/modules/workflows/cli.js +15 -93
- package/dist/modules/workflows/cli.js.map +3 -3
- package/dist/modules/workflows/data/entities.js +1 -64
- package/dist/modules/workflows/data/entities.js.map +2 -2
- package/dist/modules/workflows/data/validators.js +0 -115
- package/dist/modules/workflows/data/validators.js.map +2 -2
- package/dist/modules/workflows/examples/checkout-demo-definition.json +5 -1
- package/dist/modules/workflows/lib/activity-executor.js +13 -75
- package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
- package/dist/modules/workflows/lib/graph-utils.js +2 -71
- package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
- package/dist/modules/workflows/lib/seeds.js +5 -22
- package/dist/modules/workflows/lib/seeds.js.map +2 -2
- package/dist/modules/workflows/lib/start-validator.js +23 -33
- package/dist/modules/workflows/lib/start-validator.js.map +2 -2
- package/dist/modules/workflows/lib/transition-handler.js +57 -161
- package/dist/modules/workflows/lib/transition-handler.js.map +3 -3
- package/dist/modules/workflows/notifications.js +28 -0
- package/dist/modules/workflows/notifications.js.map +7 -0
- package/dist/modules/workflows/subscribers/task-assigned-notification.js +38 -0
- package/dist/modules/workflows/subscribers/task-assigned-notification.js.map +7 -0
- package/generated/entities/notification/index.ts +27 -0
- package/generated/entities.ids.generated.ts +5 -2
- package/generated/entity-fields-registry.ts +2 -2
- package/package.json +2 -2
- package/src/modules/api_docs/frontend/docs/api/page.tsx +3 -2
- package/src/modules/api_keys/backend/api-keys/page.tsx +1 -1
- package/src/modules/attachments/components/AttachmentLibrary.tsx +4 -0
- package/src/modules/attachments/components/AttachmentPartitionSettings.tsx +2 -0
- package/src/modules/auth/README.md +1 -1
- package/src/modules/auth/__tests__/cli-setup-acl.test.ts +1 -1
- package/src/modules/auth/api/__tests__/login.test.ts +2 -0
- package/src/modules/auth/api/admin/nav.ts +10 -6
- package/src/modules/auth/api/login.ts +26 -7
- package/src/modules/auth/api/profile/route.ts +163 -0
- package/src/modules/auth/api/reset/confirm.ts +25 -2
- package/src/modules/auth/api/reset.ts +23 -0
- package/src/modules/auth/api/sidebar/preferences/route.ts +21 -12
- package/src/modules/auth/api/users/route.ts +5 -2
- package/src/modules/auth/backend/auth/profile/page.meta.ts +9 -0
- package/src/modules/auth/backend/auth/profile/page.tsx +174 -0
- package/src/modules/auth/backend/roles/[id]/edit/page.tsx +4 -1
- package/src/modules/auth/backend/roles/page.tsx +3 -3
- package/src/modules/auth/backend/users/[id]/edit/page.tsx +22 -3
- package/src/modules/auth/backend/users/create/page.tsx +19 -2
- package/src/modules/auth/backend/users/page.tsx +3 -3
- package/src/modules/auth/cli.ts +38 -11
- package/src/modules/auth/commands/users.ts +73 -2
- package/src/modules/auth/data/validators.ts +6 -2
- package/src/modules/auth/frontend/login.tsx +134 -5
- package/src/modules/auth/frontend/reset/[token]/page.tsx +24 -11
- package/src/modules/auth/i18n/de.json +48 -1
- package/src/modules/auth/i18n/en.json +48 -1
- package/src/modules/auth/i18n/es.json +48 -1
- package/src/modules/auth/i18n/pl.json +48 -1
- package/src/modules/auth/lib/setup-app.ts +58 -9
- package/src/modules/auth/notifications.ts +109 -0
- package/src/modules/auth/services/authService.ts +27 -4
- package/src/modules/business_rules/api/execute/route.ts +8 -1
- package/src/modules/business_rules/backend/rules/page.tsx +4 -0
- package/src/modules/business_rules/backend/sets/page.tsx +3 -0
- package/src/modules/business_rules/cli.ts +2 -1
- package/src/modules/business_rules/data/validators.ts +0 -40
- package/src/modules/business_rules/i18n/en.json +3 -1
- package/src/modules/business_rules/index.ts +0 -25
- package/src/modules/business_rules/lib/__tests__/rule-engine.test.ts +51 -0
- package/src/modules/business_rules/lib/rule-engine.ts +51 -277
- package/src/modules/business_rules/notifications.ts +25 -0
- package/src/modules/business_rules/subscribers/rule-execution-failed-notification.ts +50 -0
- package/src/modules/catalog/components/PriceKindSettings.tsx +2 -0
- package/src/modules/catalog/components/categories/CategoriesDataTable.tsx +2 -2
- package/src/modules/catalog/components/products/ProductsDataTable.tsx +2 -0
- package/src/modules/catalog/i18n/en.json +3 -1
- package/src/modules/catalog/notifications.ts +25 -0
- package/src/modules/catalog/subscribers/low-stock-notification.ts +52 -0
- package/src/modules/configs/cli.ts +6 -0
- package/src/modules/configs/components/CachePanel.tsx +4 -4
- package/src/modules/configs/i18n/en.json +12 -2
- package/src/modules/configs/i18n/pl.json +12 -2
- package/src/modules/configs/lib/system-status.ts +48 -1
- package/src/modules/configs/lib/system-status.types.ts +1 -0
- package/src/modules/configs/lib/upgrade-actions.ts +18 -0
- package/src/modules/currencies/backend/currencies/page.tsx +3 -0
- package/src/modules/currencies/backend/exchange-rates/page.tsx +2 -0
- package/src/modules/customers/backend/customers/companies/page.tsx +3 -0
- package/src/modules/customers/backend/customers/deals/page.tsx +3 -0
- package/src/modules/customers/backend/customers/people/page.tsx +3 -0
- package/src/modules/customers/commands/deals.ts +39 -0
- package/src/modules/customers/components/CustomerTodosTable.tsx +1 -0
- package/src/modules/customers/i18n/en.json +5 -1
- package/src/modules/customers/notifications.ts +44 -0
- package/src/modules/customers/widgets/dashboard/customer-todos/widget.ts +2 -2
- package/src/modules/customers/widgets/dashboard/new-customers/widget.ts +2 -2
- package/src/modules/customers/widgets/dashboard/new-deals/widget.ts +2 -2
- package/src/modules/customers/widgets/dashboard/next-interactions/widget.ts +2 -2
- package/src/modules/dashboards/cli.ts +55 -5
- package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +22 -11
- package/src/modules/dashboards/lib/role-widgets.ts +80 -0
- package/src/modules/dashboards/services/widgetDataService.ts +164 -4
- package/src/modules/dashboards/widgets/dashboard/aov-kpi/widget.ts +2 -2
- package/src/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.ts +2 -2
- package/src/modules/dashboards/widgets/dashboard/orders-by-status/widget.ts +2 -2
- package/src/modules/dashboards/widgets/dashboard/orders-kpi/widget.ts +2 -2
- package/src/modules/dashboards/widgets/dashboard/pipeline-summary/widget.ts +2 -2
- package/src/modules/dashboards/widgets/dashboard/revenue-kpi/widget.ts +2 -2
- package/src/modules/dashboards/widgets/dashboard/revenue-trend/widget.ts +2 -2
- package/src/modules/dashboards/widgets/dashboard/sales-by-region/widget.ts +2 -2
- package/src/modules/dashboards/widgets/dashboard/top-customers/widget.ts +2 -2
- package/src/modules/dashboards/widgets/dashboard/top-products/widget.ts +2 -2
- package/src/modules/dictionaries/components/DictionaryTable.tsx +2 -0
- package/src/modules/directory/api/get/tenants/lookup.ts +75 -0
- package/src/modules/directory/backend/directory/organizations/page.tsx +2 -2
- package/src/modules/directory/backend/directory/tenants/page.tsx +2 -2
- package/src/modules/entities/backend/entities/user/[entityId]/records/page.tsx +2 -2
- package/src/modules/entities/components/SystemEntitiesTable.tsx +1 -1
- package/src/modules/entities/components/UserEntitiesTable.tsx +2 -2
- package/src/modules/feature_toggles/components/FeatureTogglesTable.tsx +3 -4
- package/src/modules/feature_toggles/components/OverridesTable.tsx +1 -1
- package/src/modules/notifications/__tests__/deliver-notification.test.ts +195 -0
- package/src/modules/notifications/__tests__/deliveryStrategies.test.ts +19 -0
- package/src/modules/notifications/__tests__/notificationService.test.ts +208 -0
- package/src/modules/notifications/acl.ts +7 -0
- package/src/modules/notifications/api/[id]/action/route.ts +75 -0
- package/src/modules/notifications/api/[id]/dismiss/route.ts +12 -0
- package/src/modules/notifications/api/[id]/read/route.ts +12 -0
- package/src/modules/notifications/api/[id]/restore/route.ts +53 -0
- package/src/modules/notifications/api/batch/route.ts +14 -0
- package/src/modules/notifications/api/feature/route.ts +14 -0
- package/src/modules/notifications/api/mark-all-read/route.ts +34 -0
- package/src/modules/notifications/api/openapi.ts +76 -0
- package/src/modules/notifications/api/role/route.ts +14 -0
- package/src/modules/notifications/api/route.ts +92 -0
- package/src/modules/notifications/api/settings/route.ts +157 -0
- package/src/modules/notifications/api/unread-count/route.ts +38 -0
- package/src/modules/notifications/backend/config/notifications/page.meta.ts +22 -0
- package/src/modules/notifications/backend/config/notifications/page.tsx +12 -0
- package/src/modules/notifications/cli.ts +18 -0
- package/src/modules/notifications/data/entities.ts +99 -0
- package/src/modules/notifications/data/validators.ts +115 -0
- package/src/modules/notifications/di.ts +11 -0
- package/src/modules/notifications/emails/NotificationEmail.tsx +98 -0
- package/src/modules/notifications/frontend/NotificationInboxPageClient.tsx +42 -0
- package/src/modules/notifications/frontend/NotificationSettingsPageClient.tsx +233 -0
- package/src/modules/notifications/i18n/de.json +50 -0
- package/src/modules/notifications/i18n/en.json +50 -0
- package/src/modules/notifications/i18n/es.json +50 -0
- package/src/modules/notifications/i18n/pl.json +50 -0
- package/src/modules/notifications/index.ts +12 -0
- package/src/modules/notifications/lib/deliveryConfig.ts +153 -0
- package/src/modules/notifications/lib/deliveryStrategies.ts +50 -0
- package/src/modules/notifications/lib/events.ts +48 -0
- package/src/modules/notifications/lib/notificationBuilder.ts +121 -0
- package/src/modules/notifications/lib/notificationFactory.ts +76 -0
- package/src/modules/notifications/lib/notificationMapper.ts +33 -0
- package/src/modules/notifications/lib/notificationRecipients.ts +83 -0
- package/src/modules/notifications/lib/notificationService.ts +414 -0
- package/src/modules/notifications/lib/routeHelpers.ts +151 -0
- package/src/modules/notifications/lib/safeHref.ts +29 -0
- package/src/modules/notifications/migrations/.snapshot-open-mercato.json +336 -0
- package/src/modules/notifications/migrations/Migration20260123000001.ts +73 -0
- package/src/modules/notifications/migrations/Migration20260126150000.ts +39 -0
- package/src/modules/notifications/migrations/Migration20260129082610.ts +13 -0
- package/src/modules/notifications/subscribers/deliver-notification.ts +204 -0
- package/src/modules/notifications/workers/create-notification.worker.ts +122 -0
- package/src/modules/planner/backend/planner/availability-rulesets/page.tsx +2 -2
- package/src/modules/query_index/cli.ts +82 -13
- package/src/modules/query_index/components/QueryIndexesTable.tsx +8 -2
- package/src/modules/resources/backend/resources/resource-types/page.tsx +2 -2
- package/src/modules/resources/backend/resources/resources/page.tsx +2 -2
- package/src/modules/sales/acl.ts +0 -1
- package/src/modules/sales/backend/sales/channels/offers/page.tsx +2 -0
- package/src/modules/sales/backend/sales/channels/page.tsx +2 -0
- package/src/modules/sales/backend/sales/documents/[id]/page.tsx +0 -16
- package/src/modules/sales/commands/documents.ts +62 -70
- package/src/modules/sales/commands/payments.ts +33 -0
- package/src/modules/sales/components/AdjustmentKindSettings.tsx +2 -2
- package/src/modules/sales/components/PaymentMethodsSettings.tsx +2 -2
- package/src/modules/sales/components/ShippingMethodsSettings.tsx +2 -2
- package/src/modules/sales/components/TaxRatesSettings.tsx +2 -2
- package/src/modules/sales/components/channels/SalesChannelOffersPanel.tsx +2 -0
- package/src/modules/sales/components/documents/AdjustmentsSection.tsx +2 -0
- package/src/modules/sales/components/documents/PaymentsSection.tsx +2 -1
- package/src/modules/sales/components/documents/SalesDocumentsTable.tsx +2 -0
- package/src/modules/sales/i18n/de.json +20 -0
- package/src/modules/sales/i18n/en.json +25 -1
- package/src/modules/sales/i18n/es.json +20 -0
- package/src/modules/sales/i18n/pl.json +20 -0
- package/src/modules/sales/lib/dictionaries.ts +0 -3
- package/src/modules/sales/notifications.client.ts +65 -0
- package/src/modules/sales/notifications.ts +82 -0
- package/src/modules/sales/subscribers/quote-expiring-notification.ts +53 -0
- package/src/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.tsx +156 -0
- package/src/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.tsx +156 -0
- package/src/modules/sales/widgets/notifications/index.ts +2 -0
- package/src/modules/sales/widgets/notifications/useSalesDocumentTotals.ts +81 -0
- package/src/modules/staff/backend/staff/team-members/page.tsx +1 -1
- package/src/modules/staff/backend/staff/team-roles/page.tsx +2 -2
- package/src/modules/staff/backend/staff/teams/[id]/edit/page.tsx +2 -2
- package/src/modules/staff/backend/staff/teams/page.tsx +2 -2
- package/src/modules/staff/commands/leave-requests.ts +94 -0
- package/src/modules/staff/i18n/de.json +4 -0
- package/src/modules/staff/i18n/en.json +9 -1
- package/src/modules/staff/i18n/es.json +4 -0
- package/src/modules/staff/i18n/pl.json +4 -0
- package/src/modules/staff/notifications.ts +71 -0
- package/src/modules/workflows/acl.ts +0 -2
- package/src/modules/workflows/api/__tests__/instances.route.test.ts +2 -5
- package/src/modules/workflows/api/instances/route.ts +7 -21
- package/src/modules/workflows/api/tasks/route.ts +1 -7
- package/src/modules/workflows/backend/definitions/[id]/page.meta.ts +1 -1
- package/src/modules/workflows/backend/definitions/[id]/page.tsx +0 -9
- package/src/modules/workflows/backend/definitions/create/page.meta.ts +1 -1
- package/src/modules/workflows/backend/definitions/create/page.tsx +0 -9
- package/src/modules/workflows/backend/definitions/page.tsx +5 -0
- package/src/modules/workflows/backend/definitions/visual-editor/page.meta.ts +1 -1
- package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +3 -21
- package/src/modules/workflows/backend/events/[id]/page.meta.ts +2 -2
- package/src/modules/workflows/backend/events/[id]/page.tsx +1 -1
- package/src/modules/workflows/backend/instances/[id]/page.meta.ts +2 -2
- package/src/modules/workflows/backend/instances/page.tsx +4 -1
- package/src/modules/workflows/backend/tasks/[id]/page.meta.ts +2 -2
- package/src/modules/workflows/backend/tasks/[id]/page.tsx +1 -1
- package/src/modules/workflows/backend/tasks/page.tsx +10 -6
- package/src/modules/workflows/cli.ts +12 -123
- package/src/modules/workflows/data/entities.ts +0 -124
- package/src/modules/workflows/data/validators.ts +0 -138
- package/src/modules/workflows/examples/checkout-demo-definition.json +5 -1
- package/src/modules/workflows/i18n/en.json +3 -72
- package/src/modules/workflows/lib/__tests__/activity-executor.test.ts +36 -43
- package/src/modules/workflows/lib/__tests__/transition-handler.test.ts +90 -170
- package/src/modules/workflows/lib/activity-executor.ts +16 -129
- package/src/modules/workflows/lib/graph-utils.ts +2 -117
- package/src/modules/workflows/lib/seeds.ts +8 -34
- package/src/modules/workflows/lib/start-validator.ts +28 -38
- package/src/modules/workflows/lib/transition-handler.ts +71 -212
- package/src/modules/workflows/notifications.ts +25 -0
- package/src/modules/workflows/subscribers/task-assigned-notification.ts +53 -0
- package/dist/generated/entities/workflow_event_trigger/index.js +0 -33
- package/dist/generated/entities/workflow_event_trigger/index.js.map +0 -7
- package/dist/modules/auth/events.js +0 -30
- package/dist/modules/auth/events.js.map +0 -7
- package/dist/modules/business_rules/api/execute/[ruleId]/route.js +0 -145
- package/dist/modules/business_rules/api/execute/[ruleId]/route.js.map +0 -7
- package/dist/modules/catalog/events.js +0 -34
- package/dist/modules/catalog/events.js.map +0 -7
- package/dist/modules/customers/events.js +0 -49
- package/dist/modules/customers/events.js.map +0 -7
- package/dist/modules/directory/events.js +0 -23
- package/dist/modules/directory/events.js.map +0 -7
- package/dist/modules/sales/events.js +0 -63
- package/dist/modules/sales/events.js.map +0 -7
- package/dist/modules/sales/lib/frontend/documentDataEvents.js +0 -25
- package/dist/modules/sales/lib/frontend/documentDataEvents.js.map +0 -7
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js +0 -481
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +0 -7
- package/dist/modules/workflows/components/EventTriggersEditor.js +0 -553
- package/dist/modules/workflows/components/EventTriggersEditor.js.map +0 -7
- package/dist/modules/workflows/events.js +0 -38
- package/dist/modules/workflows/events.js.map +0 -7
- package/dist/modules/workflows/examples/order-approval-definition.json +0 -257
- package/dist/modules/workflows/examples/order-approval-guard-rules.json +0 -32
- package/dist/modules/workflows/lib/event-trigger-service.js +0 -308
- package/dist/modules/workflows/lib/event-trigger-service.js.map +0 -7
- package/dist/modules/workflows/migrations/Migration20260123143500.js +0 -36
- package/dist/modules/workflows/migrations/Migration20260123143500.js.map +0 -7
- package/dist/modules/workflows/subscribers/event-trigger.js +0 -78
- package/dist/modules/workflows/subscribers/event-trigger.js.map +0 -7
- package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js +0 -323
- package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js.map +0 -7
- package/dist/modules/workflows/widgets/injection/order-approval/widget.js +0 -17
- package/dist/modules/workflows/widgets/injection/order-approval/widget.js.map +0 -7
- package/dist/modules/workflows/widgets/injection-table.js +0 -19
- package/dist/modules/workflows/widgets/injection-table.js.map +0 -7
- package/generated/entities/workflow_event_trigger/index.ts +0 -15
- package/src/modules/auth/events.ts +0 -39
- package/src/modules/business_rules/api/execute/[ruleId]/route.ts +0 -163
- package/src/modules/catalog/events.ts +0 -45
- package/src/modules/customers/events.ts +0 -63
- package/src/modules/directory/events.ts +0 -31
- package/src/modules/sales/events.ts +0 -82
- package/src/modules/sales/lib/frontend/documentDataEvents.ts +0 -28
- package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +0 -581
- package/src/modules/workflows/components/EventTriggersEditor.tsx +0 -664
- package/src/modules/workflows/events.ts +0 -49
- package/src/modules/workflows/examples/order-approval-definition.json +0 -257
- package/src/modules/workflows/examples/order-approval-guard-rules.json +0 -32
- package/src/modules/workflows/lib/event-trigger-service.ts +0 -557
- package/src/modules/workflows/migrations/Migration20260123143500.ts +0 -38
- package/src/modules/workflows/subscribers/event-trigger.ts +0 -109
- package/src/modules/workflows/widgets/injection/order-approval/widget.client.tsx +0 -446
- package/src/modules/workflows/widgets/injection/order-approval/widget.ts +0 -16
- package/src/modules/workflows/widgets/injection-table.ts +0 -21
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { createRequestContainer } from "@open-mercato/shared/lib/di/container";
|
|
2
2
|
import { WorkflowDefinition } from "./data/entities.js";
|
|
3
|
-
import { BusinessRule } from "@open-mercato/core/modules/business_rules/data/entities";
|
|
4
3
|
import * as fs from "fs";
|
|
5
4
|
import * as path from "path";
|
|
6
5
|
import { fileURLToPath } from "url";
|
|
@@ -39,7 +38,7 @@ const seedDemo = {
|
|
|
39
38
|
organizationId
|
|
40
39
|
});
|
|
41
40
|
if (existing) {
|
|
42
|
-
console.log(`\
|
|
41
|
+
console.log(`\u2139\uFE0F Demo workflow '${demoData.workflowId}' already exists (ID: ${existing.id})`);
|
|
43
42
|
return;
|
|
44
43
|
}
|
|
45
44
|
const workflow = em.create(WorkflowDefinition, {
|
|
@@ -48,7 +47,7 @@ const seedDemo = {
|
|
|
48
47
|
organizationId
|
|
49
48
|
});
|
|
50
49
|
await em.persistAndFlush(workflow);
|
|
51
|
-
console.log(`\
|
|
50
|
+
console.log(`\u2705 Seeded demo workflow: ${workflow.workflowName}`);
|
|
52
51
|
console.log(` - ID: ${workflow.id}`);
|
|
53
52
|
console.log(` - Workflow ID: ${workflow.workflowId}`);
|
|
54
53
|
console.log(` - Version: ${workflow.version}`);
|
|
@@ -80,20 +79,20 @@ const seedDemoWithRules = {
|
|
|
80
79
|
console.error(" or: mercato workflows seed-demo-with-rules -t <tenantId> -o <organizationId>");
|
|
81
80
|
return;
|
|
82
81
|
}
|
|
83
|
-
console.log("Seeding demo workflow with guard rules...\n");
|
|
82
|
+
console.log("\u{1F9E9} Seeding demo workflow with guard rules...\n");
|
|
84
83
|
try {
|
|
85
|
-
console.log("1. Seeding demo workflow...");
|
|
84
|
+
console.log("1. \u{1F9E9} Seeding demo workflow...");
|
|
86
85
|
await seedDemo.run(rest);
|
|
87
|
-
console.log("\n2. Seeding guard rules...");
|
|
86
|
+
console.log("\n2. \u{1F9E0} Seeding guard rules...");
|
|
88
87
|
const { resolve } = await createRequestContainer();
|
|
89
88
|
const em = resolve("em");
|
|
90
|
-
const { BusinessRule
|
|
89
|
+
const { BusinessRule } = await import("../business_rules/data/entities.js");
|
|
91
90
|
const rulesPath = path.join(__dirname, "examples", "guard-rules-example.json");
|
|
92
91
|
const rulesData = JSON.parse(fs.readFileSync(rulesPath, "utf8"));
|
|
93
92
|
let seededCount = 0;
|
|
94
93
|
let skippedCount = 0;
|
|
95
94
|
for (const ruleData of rulesData) {
|
|
96
|
-
const existing = await em.findOne(
|
|
95
|
+
const existing = await em.findOne(BusinessRule, {
|
|
97
96
|
ruleId: ruleData.ruleId,
|
|
98
97
|
tenantId,
|
|
99
98
|
organizationId
|
|
@@ -103,7 +102,7 @@ const seedDemoWithRules = {
|
|
|
103
102
|
skippedCount++;
|
|
104
103
|
continue;
|
|
105
104
|
}
|
|
106
|
-
const rule = em.create(
|
|
105
|
+
const rule = em.create(BusinessRule, {
|
|
107
106
|
...ruleData,
|
|
108
107
|
tenantId,
|
|
109
108
|
organizationId
|
|
@@ -113,7 +112,7 @@ const seedDemoWithRules = {
|
|
|
113
112
|
seededCount++;
|
|
114
113
|
}
|
|
115
114
|
console.log(`
|
|
116
|
-
\
|
|
115
|
+
\u2705 Demo workflow with guard rules seeded successfully!`);
|
|
117
116
|
console.log(` - Workflow: checkout_simple_v1`);
|
|
118
117
|
console.log(` - Guard rules seeded: ${seededCount}`);
|
|
119
118
|
console.log(` - Guard rules skipped: ${skippedCount}`);
|
|
@@ -144,7 +143,7 @@ const seedSalesPipeline = {
|
|
|
144
143
|
organizationId
|
|
145
144
|
});
|
|
146
145
|
if (existing) {
|
|
147
|
-
console.log(`\
|
|
146
|
+
console.log(`\u2139\uFE0F Sales pipeline workflow '${pipelineData.workflowId}' already exists (ID: ${existing.id})`);
|
|
148
147
|
return;
|
|
149
148
|
}
|
|
150
149
|
const workflow = em.create(WorkflowDefinition, {
|
|
@@ -153,7 +152,7 @@ const seedSalesPipeline = {
|
|
|
153
152
|
organizationId
|
|
154
153
|
});
|
|
155
154
|
await em.persistAndFlush(workflow);
|
|
156
|
-
console.log(`\
|
|
155
|
+
console.log(`\u2705 Seeded sales pipeline workflow: ${workflow.workflowName}`);
|
|
157
156
|
console.log(` - ID: ${workflow.id}`);
|
|
158
157
|
console.log(` - Workflow ID: ${workflow.workflowId}`);
|
|
159
158
|
console.log(` - Version: ${workflow.version}`);
|
|
@@ -189,7 +188,7 @@ const seedSimpleApproval = {
|
|
|
189
188
|
organizationId
|
|
190
189
|
});
|
|
191
190
|
if (existing) {
|
|
192
|
-
console.log(`\
|
|
191
|
+
console.log(`\u2139\uFE0F Simple approval workflow '${approvalData.workflowId}' already exists (ID: ${existing.id})`);
|
|
193
192
|
return;
|
|
194
193
|
}
|
|
195
194
|
const workflow = em.create(WorkflowDefinition, {
|
|
@@ -198,7 +197,7 @@ const seedSimpleApproval = {
|
|
|
198
197
|
organizationId
|
|
199
198
|
});
|
|
200
199
|
await em.persistAndFlush(workflow);
|
|
201
|
-
console.log(`\
|
|
200
|
+
console.log(`\u2705 Seeded simple approval workflow: ${workflow.workflowName}`);
|
|
202
201
|
console.log(` - ID: ${workflow.id}`);
|
|
203
202
|
console.log(` - Workflow ID: ${workflow.workflowId}`);
|
|
204
203
|
console.log(` - Version: ${workflow.version}`);
|
|
@@ -212,80 +211,6 @@ const seedSimpleApproval = {
|
|
|
212
211
|
}
|
|
213
212
|
}
|
|
214
213
|
};
|
|
215
|
-
const seedOrderApproval = {
|
|
216
|
-
command: "seed-order-approval",
|
|
217
|
-
async run(rest) {
|
|
218
|
-
const args = parseArgs(rest);
|
|
219
|
-
const tenantId = String(args.tenantId ?? args.tenant ?? args.t ?? "");
|
|
220
|
-
const organizationId = String(args.organizationId ?? args.orgId ?? args.org ?? args.o ?? "");
|
|
221
|
-
if (!tenantId || !organizationId) {
|
|
222
|
-
console.error("Usage: mercato workflows seed-order-approval --tenant <tenantId> --org <organizationId>");
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
try {
|
|
226
|
-
const { resolve } = await createRequestContainer();
|
|
227
|
-
const em = resolve("em");
|
|
228
|
-
const guardRulesPath = path.join(__dirname, "examples", "order-approval-guard-rules.json");
|
|
229
|
-
const guardRulesData = JSON.parse(fs.readFileSync(guardRulesPath, "utf8"));
|
|
230
|
-
let rulesSeeded = 0;
|
|
231
|
-
let rulesSkipped = 0;
|
|
232
|
-
for (const rule of guardRulesData) {
|
|
233
|
-
const existingRule = await em.findOne(BusinessRule, {
|
|
234
|
-
ruleId: rule.ruleId,
|
|
235
|
-
tenantId,
|
|
236
|
-
organizationId
|
|
237
|
-
});
|
|
238
|
-
if (existingRule) {
|
|
239
|
-
rulesSkipped++;
|
|
240
|
-
continue;
|
|
241
|
-
}
|
|
242
|
-
const newRule = em.create(BusinessRule, {
|
|
243
|
-
...rule,
|
|
244
|
-
tenantId,
|
|
245
|
-
organizationId
|
|
246
|
-
});
|
|
247
|
-
em.persist(newRule);
|
|
248
|
-
console.log(` \u2713 Seeded guard rule: ${rule.ruleName}`);
|
|
249
|
-
rulesSeeded++;
|
|
250
|
-
}
|
|
251
|
-
if (rulesSeeded > 0) {
|
|
252
|
-
await em.flush();
|
|
253
|
-
}
|
|
254
|
-
const approvalPath = path.join(__dirname, "examples", "order-approval-definition.json");
|
|
255
|
-
const approvalData = JSON.parse(fs.readFileSync(approvalPath, "utf8"));
|
|
256
|
-
const existing = await em.findOne(WorkflowDefinition, {
|
|
257
|
-
workflowId: approvalData.workflowId,
|
|
258
|
-
tenantId,
|
|
259
|
-
organizationId
|
|
260
|
-
});
|
|
261
|
-
if (existing) {
|
|
262
|
-
console.log(`\u2713 Order approval workflow '${approvalData.workflowId}' already exists (ID: ${existing.id})`);
|
|
263
|
-
console.log(` - Guard rules seeded: ${rulesSeeded}`);
|
|
264
|
-
console.log(` - Guard rules skipped: ${rulesSkipped}`);
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
const workflow = em.create(WorkflowDefinition, {
|
|
268
|
-
...approvalData,
|
|
269
|
-
tenantId,
|
|
270
|
-
organizationId
|
|
271
|
-
});
|
|
272
|
-
await em.persistAndFlush(workflow);
|
|
273
|
-
console.log(`\u2713 Seeded order approval workflow: ${workflow.workflowName}`);
|
|
274
|
-
console.log(` - ID: ${workflow.id}`);
|
|
275
|
-
console.log(` - Workflow ID: ${workflow.workflowId}`);
|
|
276
|
-
console.log(` - Version: ${workflow.version}`);
|
|
277
|
-
console.log(` - Steps: ${workflow.definition.steps.length}`);
|
|
278
|
-
console.log(` - Transitions: ${workflow.definition.transitions.length}`);
|
|
279
|
-
console.log(` - Guard rules seeded: ${rulesSeeded}`);
|
|
280
|
-
console.log(` - Guard rules skipped: ${rulesSkipped}`);
|
|
281
|
-
console.log("");
|
|
282
|
-
console.log("Order approval workflow is ready!");
|
|
283
|
-
} catch (error) {
|
|
284
|
-
console.error("Error seeding order approval workflow:", error);
|
|
285
|
-
throw error;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
};
|
|
289
214
|
const startWorker = {
|
|
290
215
|
command: "start-worker",
|
|
291
216
|
async run(rest) {
|
|
@@ -335,7 +260,7 @@ const seedAll = {
|
|
|
335
260
|
console.error("Usage: mercato workflows seed-all --tenant <tenantId> --org <organizationId>");
|
|
336
261
|
return;
|
|
337
262
|
}
|
|
338
|
-
console.log("Seeding all example workflows...\n");
|
|
263
|
+
console.log("\u{1F9E9} Seeding all example workflows...\n");
|
|
339
264
|
try {
|
|
340
265
|
await seedDemoWithRules.run(rest);
|
|
341
266
|
console.log("");
|
|
@@ -343,9 +268,7 @@ const seedAll = {
|
|
|
343
268
|
console.log("");
|
|
344
269
|
await seedSimpleApproval.run(rest);
|
|
345
270
|
console.log("");
|
|
346
|
-
|
|
347
|
-
console.log("");
|
|
348
|
-
console.log("\u2713 All example workflows seeded successfully!");
|
|
271
|
+
console.log("\u2705 All example workflows seeded successfully!");
|
|
349
272
|
} catch (error) {
|
|
350
273
|
console.error("Error seeding workflows:", error);
|
|
351
274
|
throw error;
|
|
@@ -402,7 +325,6 @@ const workflowsCliCommands = [
|
|
|
402
325
|
seedDemoWithRules,
|
|
403
326
|
seedSalesPipeline,
|
|
404
327
|
seedSimpleApproval,
|
|
405
|
-
seedOrderApproval,
|
|
406
328
|
seedAll
|
|
407
329
|
];
|
|
408
330
|
var cli_default = workflowsCliCommands;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/modules/workflows/cli.ts"],
|
|
4
|
-
"sourcesContent": ["import type { ModuleCli } from '@open-mercato/shared/modules/registry'\nimport { createRequestContainer } from '@open-mercato/shared/lib/di/container'\nimport type { EntityManager } from '@mikro-orm/postgresql'\nimport { WorkflowDefinition } from './data/entities'\nimport { BusinessRule, type RuleType } from '@open-mercato/core/modules/business_rules/data/entities'\nimport * as fs from 'fs'\nimport * as path from 'path'\nimport { fileURLToPath } from 'url'\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = path.dirname(__filename)\n\n/**\n * Parse CLI arguments\n */\nfunction parseArgs(args: string[]) {\n const result: Record<string, string> = {}\n for (let i = 0; i < args.length; i += 2) {\n const key = args[i]?.replace(/^-+/, '') // Remove one or more dashes\n const value = args[i + 1]\n if (key && value) {\n result[key] = value\n }\n }\n return result\n}\n\n/**\n * Seed demo checkout workflow\n */\nconst seedDemo: ModuleCli = {\n command: 'seed-demo',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const tenantId = String(args.tenantId ?? args.tenant ?? args.t ?? '')\n const organizationId = String(args.organizationId ?? args.orgId ?? args.org ?? args.o ?? '')\n\n if (!tenantId || !organizationId) {\n console.error('Usage: mercato workflows seed-demo --tenant <tenantId> --org <organizationId>')\n console.error(' or: mercato workflows seed-demo -t <tenantId> -o <organizationId>')\n return\n }\n\n try {\n const { resolve } = await createRequestContainer()\n const em = resolve<EntityManager>('em')\n\n // Read the demo workflow definition\n const demoPath = path.join(__dirname, 'examples', 'checkout-demo-definition.json')\n const demoData = JSON.parse(fs.readFileSync(demoPath, 'utf8'))\n\n // Check if it already exists\n const existing = await em.findOne(WorkflowDefinition, {\n workflowId: demoData.workflowId,\n tenantId,\n organizationId,\n })\n\n if (existing) {\n console.log(`\u2713 Demo workflow '${demoData.workflowId}' already exists (ID: ${existing.id})`)\n return\n }\n\n // Create the workflow definition\n const workflow = em.create(WorkflowDefinition, {\n ...demoData,\n tenantId,\n organizationId,\n })\n\n await em.persistAndFlush(workflow)\n\n console.log(`\u2713 Seeded demo workflow: ${workflow.workflowName}`)\n console.log(` - ID: ${workflow.id}`)\n console.log(` - Workflow ID: ${workflow.workflowId}`)\n console.log(` - Version: ${workflow.version}`)\n console.log(` - Steps: ${workflow.definition.steps.length}`)\n console.log(` - Transitions: ${workflow.definition.transitions.length}`)\n console.log('')\n console.log('Demo workflow is ready! You can now:')\n console.log(' 1. View it in admin: /backend/definitions')\n console.log(' 2. Try the demo page: /checkout-demo')\n console.log(' 3. Start an instance via API: POST /api/workflows/instances')\n console.log('')\n console.log('Note: This workflow includes a USER_TASK step for customer information.')\n console.log('When the workflow reaches this step, it will pause and require user input.')\n console.log('Complete pending tasks at: /backend/tasks')\n } catch (error) {\n console.error('Error seeding demo workflow:', error)\n throw error\n }\n },\n}\n\n/**\n * Seed demo checkout workflow with guard rules\n */\nconst seedDemoWithRules: ModuleCli = {\n command: 'seed-demo-with-rules',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const tenantId = String(args.tenantId ?? args.tenant ?? args.t ?? '')\n const organizationId = String(args.organizationId ?? args.orgId ?? args.org ?? args.o ?? '')\n\n if (!tenantId || !organizationId) {\n console.error('Usage: mercato workflows seed-demo-with-rules --tenant <tenantId> --org <organizationId>')\n console.error(' or: mercato workflows seed-demo-with-rules -t <tenantId> -o <organizationId>')\n return\n }\n\n console.log('Seeding demo workflow with guard rules...\\n')\n\n try {\n // Seed the workflow definition\n console.log('1. Seeding demo workflow...')\n await seedDemo.run(rest)\n\n // Seed the guard rules\n console.log('\\n2. Seeding guard rules...')\n const { resolve } = await createRequestContainer()\n const em = resolve<EntityManager>('em')\n\n // Import BusinessRule entity\n const { BusinessRule } = await import('../business_rules/data/entities')\n\n // Read guard rules\n const rulesPath = path.join(__dirname, 'examples', 'guard-rules-example.json')\n const rulesData = JSON.parse(fs.readFileSync(rulesPath, 'utf8'))\n\n let seededCount = 0\n let skippedCount = 0\n\n for (const ruleData of rulesData) {\n const existing = await em.findOne(BusinessRule, {\n ruleId: ruleData.ruleId,\n tenantId,\n organizationId,\n })\n\n if (existing) {\n console.log(` \u2298 Guard rule '${ruleData.ruleId}' already exists`)\n skippedCount++\n continue\n }\n\n const rule = em.create(BusinessRule, {\n ...ruleData,\n tenantId,\n organizationId,\n })\n\n await em.persistAndFlush(rule)\n console.log(` \u2713 Seeded guard rule: ${rule.ruleName}`)\n seededCount++\n }\n\n console.log(`\\n\u2713 Demo workflow with guard rules seeded successfully!`)\n console.log(` - Workflow: checkout_simple_v1`)\n console.log(` - Guard rules seeded: ${seededCount}`)\n console.log(` - Guard rules skipped: ${skippedCount}`)\n } catch (error) {\n console.error('Error seeding demo with rules:', error)\n throw error\n }\n },\n}\n\n/**\n * Seed sales pipeline example\n */\nconst seedSalesPipeline: ModuleCli = {\n command: 'seed-sales-pipeline',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const tenantId = String(args.tenantId ?? args.tenant ?? args.t ?? '')\n const organizationId = String(args.organizationId ?? args.orgId ?? args.org ?? args.o ?? '')\n\n if (!tenantId || !organizationId) {\n console.error('Usage: mercato workflows seed-sales-pipeline --tenant <tenantId> --org <organizationId>')\n return\n }\n\n try {\n const { resolve } = await createRequestContainer()\n const em = resolve<EntityManager>('em')\n\n // Read the sales pipeline workflow definition\n const pipelinePath = path.join(__dirname, 'examples', 'sales-pipeline-definition.json')\n const pipelineData = JSON.parse(fs.readFileSync(pipelinePath, 'utf8'))\n\n // Check if it already exists\n const existing = await em.findOne(WorkflowDefinition, {\n workflowId: pipelineData.workflowId,\n tenantId,\n organizationId,\n })\n\n if (existing) {\n console.log(`\u2713 Sales pipeline workflow '${pipelineData.workflowId}' already exists (ID: ${existing.id})`)\n return\n }\n\n // Create the workflow definition\n const workflow = em.create(WorkflowDefinition, {\n ...pipelineData,\n tenantId,\n organizationId,\n })\n\n await em.persistAndFlush(workflow)\n\n console.log(`\u2713 Seeded sales pipeline workflow: ${workflow.workflowName}`)\n console.log(` - ID: ${workflow.id}`)\n console.log(` - Workflow ID: ${workflow.workflowId}`)\n console.log(` - Version: ${workflow.version}`)\n console.log(` - Steps: ${workflow.definition.steps.length}`)\n console.log(` - Transitions: ${workflow.definition.transitions.length}`)\n console.log(` - Activities: ${workflow.definition.transitions.reduce((sum, t) => sum + (t.activities?.length || 0), 0)}`)\n console.log('')\n console.log('Sales pipeline workflow is ready!')\n } catch (error) {\n console.error('Error seeding sales pipeline workflow:', error)\n throw error\n }\n },\n}\n\n/**\n * Seed simple approval example\n */\nconst seedSimpleApproval: ModuleCli = {\n command: 'seed-simple-approval',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const tenantId = String(args.tenantId ?? args.tenant ?? args.t ?? '')\n const organizationId = String(args.organizationId ?? args.orgId ?? args.org ?? args.o ?? '')\n\n if (!tenantId || !organizationId) {\n console.error('Usage: mercato workflows seed-simple-approval --tenant <tenantId> --org <organizationId>')\n return\n }\n\n try {\n const { resolve } = await createRequestContainer()\n const em = resolve<EntityManager>('em')\n\n // Read the simple approval workflow definition\n const approvalPath = path.join(__dirname, 'examples', 'simple-approval-definition.json')\n const approvalData = JSON.parse(fs.readFileSync(approvalPath, 'utf8'))\n\n // Check if it already exists\n const existing = await em.findOne(WorkflowDefinition, {\n workflowId: approvalData.workflowId,\n tenantId,\n organizationId,\n })\n\n if (existing) {\n console.log(`\u2713 Simple approval workflow '${approvalData.workflowId}' already exists (ID: ${existing.id})`)\n return\n }\n\n // Create the workflow definition\n const workflow = em.create(WorkflowDefinition, {\n ...approvalData,\n tenantId,\n organizationId,\n })\n\n await em.persistAndFlush(workflow)\n\n console.log(`\u2713 Seeded simple approval workflow: ${workflow.workflowName}`)\n console.log(` - ID: ${workflow.id}`)\n console.log(` - Workflow ID: ${workflow.workflowId}`)\n console.log(` - Version: ${workflow.version}`)\n console.log(` - Steps: ${workflow.definition.steps.length}`)\n console.log(` - Transitions: ${workflow.definition.transitions.length}`)\n console.log('')\n console.log('Simple approval workflow is ready!')\n } catch (error) {\n console.error('Error seeding simple approval workflow:', error)\n throw error\n }\n },\n}\n\n/**\n * Seed order approval example\n */\nconst seedOrderApproval: ModuleCli = {\n command: 'seed-order-approval',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const tenantId = String(args.tenantId ?? args.tenant ?? args.t ?? '')\n const organizationId = String(args.organizationId ?? args.orgId ?? args.org ?? args.o ?? '')\n\n if (!tenantId || !organizationId) {\n console.error('Usage: mercato workflows seed-order-approval --tenant <tenantId> --org <organizationId>')\n return\n }\n\n try {\n const { resolve } = await createRequestContainer()\n const em = resolve<EntityManager>('em')\n\n // 1. Seed order approval guard rules first\n const guardRulesPath = path.join(__dirname, 'examples', 'order-approval-guard-rules.json')\n const guardRulesData = JSON.parse(fs.readFileSync(guardRulesPath, 'utf8')) as Array<{\n ruleId: string\n ruleName: string\n ruleType: RuleType\n entityType: string\n description?: string\n eventType?: string\n conditionExpression?: Record<string, unknown>\n enabled?: boolean\n priority?: number\n }>\n\n let rulesSeeded = 0\n let rulesSkipped = 0\n for (const rule of guardRulesData) {\n const existingRule = await em.findOne(BusinessRule, {\n ruleId: rule.ruleId,\n tenantId,\n organizationId,\n })\n\n if (existingRule) {\n rulesSkipped++\n continue\n }\n\n const newRule = em.create(BusinessRule, {\n ...rule,\n tenantId,\n organizationId,\n })\n em.persist(newRule)\n console.log(` \u2713 Seeded guard rule: ${rule.ruleName}`)\n rulesSeeded++\n }\n\n if (rulesSeeded > 0) {\n await em.flush()\n }\n\n // 2. Read the order approval workflow definition\n const approvalPath = path.join(__dirname, 'examples', 'order-approval-definition.json')\n const approvalData = JSON.parse(fs.readFileSync(approvalPath, 'utf8'))\n\n // Check if it already exists\n const existing = await em.findOne(WorkflowDefinition, {\n workflowId: approvalData.workflowId,\n tenantId,\n organizationId,\n })\n\n if (existing) {\n console.log(`\u2713 Order approval workflow '${approvalData.workflowId}' already exists (ID: ${existing.id})`)\n console.log(` - Guard rules seeded: ${rulesSeeded}`)\n console.log(` - Guard rules skipped: ${rulesSkipped}`)\n return\n }\n\n // Create the workflow definition\n const workflow = em.create(WorkflowDefinition, {\n ...approvalData,\n tenantId,\n organizationId,\n })\n\n await em.persistAndFlush(workflow)\n\n console.log(`\u2713 Seeded order approval workflow: ${workflow.workflowName}`)\n console.log(` - ID: ${workflow.id}`)\n console.log(` - Workflow ID: ${workflow.workflowId}`)\n console.log(` - Version: ${workflow.version}`)\n console.log(` - Steps: ${workflow.definition.steps.length}`)\n console.log(` - Transitions: ${workflow.definition.transitions.length}`)\n console.log(` - Guard rules seeded: ${rulesSeeded}`)\n console.log(` - Guard rules skipped: ${rulesSkipped}`)\n console.log('')\n console.log('Order approval workflow is ready!')\n } catch (error) {\n console.error('Error seeding order approval workflow:', error)\n throw error\n }\n },\n}\n\n/**\n * Start workflow activity worker\n */\nconst startWorker: ModuleCli = {\n command: 'start-worker',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const concurrency = parseInt(args.concurrency ?? args.c ?? '5')\n\n const strategy = process.env.QUEUE_STRATEGY === 'async' ? 'async' : 'local'\n\n console.log('[Workflow Worker] Starting activity worker...')\n console.log(`[Workflow Worker] Strategy: ${strategy}`)\n\n if (strategy === 'local') {\n const pollMs = process.env.LOCAL_QUEUE_POLL_MS || '5000'\n console.log(`[Workflow Worker] Polling interval: ${pollMs}ms`)\n console.log('[Workflow Worker] NOTE: Local strategy is for development only.')\n console.log('[Workflow Worker] Use QUEUE_STRATEGY=async with Redis for production.')\n } else {\n console.log(`[Workflow Worker] Concurrency: ${concurrency}`)\n console.log(`[Workflow Worker] Redis: ${process.env.REDIS_URL || process.env.QUEUE_REDIS_URL}`)\n }\n\n try {\n const container = await createRequestContainer()\n const em = container.resolve<EntityManager>('em')\n\n // Import queue and handler\n const { runWorker } = await import('@open-mercato/queue/worker')\n const { createActivityWorkerHandler } = await import('./lib/activity-worker-handler')\n const { WORKFLOW_ACTIVITIES_QUEUE_NAME } = await import('./lib/activity-queue-types')\n\n // Create handler\n const handler = createActivityWorkerHandler(em, container)\n\n // Run worker\n await runWorker({\n queueName: WORKFLOW_ACTIVITIES_QUEUE_NAME,\n handler,\n connection: strategy === 'async' ? {\n url: process.env.REDIS_URL || process.env.QUEUE_REDIS_URL,\n } : undefined,\n concurrency,\n gracefulShutdown: true,\n })\n } catch (error) {\n console.error('[Workflow Worker] Failed to start worker:', error)\n throw error\n }\n },\n}\n\n/**\n * Seed all example workflows\n */\nconst seedAll: ModuleCli = {\n command: 'seed-all',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const tenantId = String(args.tenantId ?? args.tenant ?? args.t ?? '')\n const organizationId = String(args.organizationId ?? args.orgId ?? args.org ?? args.o ?? '')\n\n if (!tenantId || !organizationId) {\n console.error('Usage: mercato workflows seed-all --tenant <tenantId> --org <organizationId>')\n return\n }\n\n console.log('Seeding all example workflows...\\n')\n\n try {\n // Seed demo checkout with rules\n await seedDemoWithRules.run(rest)\n console.log('')\n\n // Seed sales pipeline\n await seedSalesPipeline.run(rest)\n console.log('')\n\n // Seed simple approval\n await seedSimpleApproval.run(rest)\n console.log('')\n\n // Seed order approval\n await seedOrderApproval.run(rest)\n console.log('')\n\n console.log('\u2713 All example workflows seeded successfully!')\n } catch (error) {\n console.error('Error seeding workflows:', error)\n throw error\n }\n },\n}\n\n/**\n * Manually process pending workflow activities\n */\nconst processActivities: ModuleCli = {\n command: 'process-activities',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const limit = parseInt(args.limit ?? args.l ?? '0')\n\n console.log('[Workflow Activities] Processing pending activities...')\n if (limit > 0) {\n console.log(`[Workflow Activities] Limit: ${limit} jobs`)\n }\n\n try {\n const container = await createRequestContainer()\n const em = container.resolve<EntityManager>('em')\n\n // Import queue and handler\n const { createQueue } = await import('@open-mercato/queue')\n const { createActivityWorkerHandler } = await import('./lib/activity-worker-handler')\n const { WORKFLOW_ACTIVITIES_QUEUE_NAME } = await import('./lib/activity-queue-types')\n\n // Create queue instance\n const queue = createQueue(WORKFLOW_ACTIVITIES_QUEUE_NAME, 'local', {\n baseDir: process.env.QUEUE_BASE_DIR || '.queue',\n })\n\n // Create handler\n const handler = createActivityWorkerHandler(em, container)\n\n // Get initial counts\n const initialCounts = await queue.getJobCounts()\n console.log(`[Workflow Activities] Pending jobs: ${initialCounts.waiting}`)\n\n if (initialCounts.waiting === 0) {\n console.log('[Workflow Activities] No jobs to process')\n await queue.close()\n return\n }\n\n // Process jobs\n const result = await queue.process(handler as any, limit > 0 ? { limit } : undefined)\n\n console.log(`\\n[Workflow Activities] \u2713 Processed ${result.processed} activities`)\n if (result.failed > 0) {\n console.log(`[Workflow Activities] \u2717 Failed: ${result.failed} activities`)\n }\n\n // Show remaining\n const finalCounts = await queue.getJobCounts()\n if (finalCounts.waiting > 0) {\n console.log(`[Workflow Activities] Remaining: ${finalCounts.waiting} jobs`)\n }\n\n await queue.close()\n } catch (error) {\n console.error('[Workflow Activities] Error processing activities:', error)\n throw error\n }\n },\n}\n\nconst workflowsCliCommands = [\n startWorker,\n processActivities,\n seedDemo,\n seedDemoWithRules,\n seedSalesPipeline,\n seedSimpleApproval,\n seedOrderApproval,\n seedAll,\n]\n\nexport default workflowsCliCommands\n"],
|
|
5
|
-
"mappings": "AACA,SAAS,8BAA8B;AAEvC,SAAS,0BAA0B;AACnC,
|
|
6
|
-
"names": [
|
|
4
|
+
"sourcesContent": ["import type { ModuleCli } from '@open-mercato/shared/modules/registry'\nimport { createRequestContainer } from '@open-mercato/shared/lib/di/container'\nimport type { EntityManager } from '@mikro-orm/postgresql'\nimport { WorkflowDefinition } from './data/entities'\nimport * as fs from 'fs'\nimport * as path from 'path'\nimport { fileURLToPath } from 'url'\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = path.dirname(__filename)\n\n/**\n * Parse CLI arguments\n */\nfunction parseArgs(args: string[]) {\n const result: Record<string, string> = {}\n for (let i = 0; i < args.length; i += 2) {\n const key = args[i]?.replace(/^-+/, '') // Remove one or more dashes\n const value = args[i + 1]\n if (key && value) {\n result[key] = value\n }\n }\n return result\n}\n\n/**\n * Seed demo checkout workflow\n */\nconst seedDemo: ModuleCli = {\n command: 'seed-demo',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const tenantId = String(args.tenantId ?? args.tenant ?? args.t ?? '')\n const organizationId = String(args.organizationId ?? args.orgId ?? args.org ?? args.o ?? '')\n\n if (!tenantId || !organizationId) {\n console.error('Usage: mercato workflows seed-demo --tenant <tenantId> --org <organizationId>')\n console.error(' or: mercato workflows seed-demo -t <tenantId> -o <organizationId>')\n return\n }\n\n try {\n const { resolve } = await createRequestContainer()\n const em = resolve<EntityManager>('em')\n\n // Read the demo workflow definition\n const demoPath = path.join(__dirname, 'examples', 'checkout-demo-definition.json')\n const demoData = JSON.parse(fs.readFileSync(demoPath, 'utf8'))\n\n // Check if it already exists\n const existing = await em.findOne(WorkflowDefinition, {\n workflowId: demoData.workflowId,\n tenantId,\n organizationId,\n })\n\n if (existing) {\n console.log(`\u2139\uFE0F Demo workflow '${demoData.workflowId}' already exists (ID: ${existing.id})`)\n return\n }\n\n // Create the workflow definition\n const workflow = em.create(WorkflowDefinition, {\n ...demoData,\n tenantId,\n organizationId,\n })\n\n await em.persistAndFlush(workflow)\n\n console.log(`\u2705 Seeded demo workflow: ${workflow.workflowName}`)\n console.log(` - ID: ${workflow.id}`)\n console.log(` - Workflow ID: ${workflow.workflowId}`)\n console.log(` - Version: ${workflow.version}`)\n console.log(` - Steps: ${workflow.definition.steps.length}`)\n console.log(` - Transitions: ${workflow.definition.transitions.length}`)\n console.log('')\n console.log('Demo workflow is ready! You can now:')\n console.log(' 1. View it in admin: /backend/definitions')\n console.log(' 2. Try the demo page: /checkout-demo')\n console.log(' 3. Start an instance via API: POST /api/workflows/instances')\n console.log('')\n console.log('Note: This workflow includes a USER_TASK step for customer information.')\n console.log('When the workflow reaches this step, it will pause and require user input.')\n console.log('Complete pending tasks at: /backend/tasks')\n } catch (error) {\n console.error('Error seeding demo workflow:', error)\n throw error\n }\n },\n}\n\n/**\n * Seed demo checkout workflow with guard rules\n */\nconst seedDemoWithRules: ModuleCli = {\n command: 'seed-demo-with-rules',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const tenantId = String(args.tenantId ?? args.tenant ?? args.t ?? '')\n const organizationId = String(args.organizationId ?? args.orgId ?? args.org ?? args.o ?? '')\n\n if (!tenantId || !organizationId) {\n console.error('Usage: mercato workflows seed-demo-with-rules --tenant <tenantId> --org <organizationId>')\n console.error(' or: mercato workflows seed-demo-with-rules -t <tenantId> -o <organizationId>')\n return\n }\n\n console.log('\uD83E\uDDE9 Seeding demo workflow with guard rules...\\n')\n\n try {\n // Seed the workflow definition\n console.log('1. \uD83E\uDDE9 Seeding demo workflow...')\n await seedDemo.run(rest)\n\n // Seed the guard rules\n console.log('\\n2. \uD83E\uDDE0 Seeding guard rules...')\n const { resolve } = await createRequestContainer()\n const em = resolve<EntityManager>('em')\n\n // Import BusinessRule entity\n const { BusinessRule } = await import('../business_rules/data/entities')\n\n // Read guard rules\n const rulesPath = path.join(__dirname, 'examples', 'guard-rules-example.json')\n const rulesData = JSON.parse(fs.readFileSync(rulesPath, 'utf8'))\n\n let seededCount = 0\n let skippedCount = 0\n\n for (const ruleData of rulesData) {\n const existing = await em.findOne(BusinessRule, {\n ruleId: ruleData.ruleId,\n tenantId,\n organizationId,\n })\n\n if (existing) {\n console.log(` \u2298 Guard rule '${ruleData.ruleId}' already exists`)\n skippedCount++\n continue\n }\n\n const rule = em.create(BusinessRule, {\n ...ruleData,\n tenantId,\n organizationId,\n })\n\n await em.persistAndFlush(rule)\n console.log(` \u2713 Seeded guard rule: ${rule.ruleName}`)\n seededCount++\n }\n\n console.log(`\\n\u2705 Demo workflow with guard rules seeded successfully!`)\n console.log(` - Workflow: checkout_simple_v1`)\n console.log(` - Guard rules seeded: ${seededCount}`)\n console.log(` - Guard rules skipped: ${skippedCount}`)\n } catch (error) {\n console.error('Error seeding demo with rules:', error)\n throw error\n }\n },\n}\n\n/**\n * Seed sales pipeline example\n */\nconst seedSalesPipeline: ModuleCli = {\n command: 'seed-sales-pipeline',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const tenantId = String(args.tenantId ?? args.tenant ?? args.t ?? '')\n const organizationId = String(args.organizationId ?? args.orgId ?? args.org ?? args.o ?? '')\n\n if (!tenantId || !organizationId) {\n console.error('Usage: mercato workflows seed-sales-pipeline --tenant <tenantId> --org <organizationId>')\n return\n }\n\n try {\n const { resolve } = await createRequestContainer()\n const em = resolve<EntityManager>('em')\n\n // Read the sales pipeline workflow definition\n const pipelinePath = path.join(__dirname, 'examples', 'sales-pipeline-definition.json')\n const pipelineData = JSON.parse(fs.readFileSync(pipelinePath, 'utf8'))\n\n // Check if it already exists\n const existing = await em.findOne(WorkflowDefinition, {\n workflowId: pipelineData.workflowId,\n tenantId,\n organizationId,\n })\n\n if (existing) {\n console.log(`\u2139\uFE0F Sales pipeline workflow '${pipelineData.workflowId}' already exists (ID: ${existing.id})`)\n return\n }\n\n // Create the workflow definition\n const workflow = em.create(WorkflowDefinition, {\n ...pipelineData,\n tenantId,\n organizationId,\n })\n\n await em.persistAndFlush(workflow)\n\n console.log(`\u2705 Seeded sales pipeline workflow: ${workflow.workflowName}`)\n console.log(` - ID: ${workflow.id}`)\n console.log(` - Workflow ID: ${workflow.workflowId}`)\n console.log(` - Version: ${workflow.version}`)\n console.log(` - Steps: ${workflow.definition.steps.length}`)\n console.log(` - Transitions: ${workflow.definition.transitions.length}`)\n console.log(` - Activities: ${workflow.definition.transitions.reduce((sum, t) => sum + (t.activities?.length || 0), 0)}`)\n console.log('')\n console.log('Sales pipeline workflow is ready!')\n } catch (error) {\n console.error('Error seeding sales pipeline workflow:', error)\n throw error\n }\n },\n}\n\n/**\n * Seed simple approval example\n */\nconst seedSimpleApproval: ModuleCli = {\n command: 'seed-simple-approval',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const tenantId = String(args.tenantId ?? args.tenant ?? args.t ?? '')\n const organizationId = String(args.organizationId ?? args.orgId ?? args.org ?? args.o ?? '')\n\n if (!tenantId || !organizationId) {\n console.error('Usage: mercato workflows seed-simple-approval --tenant <tenantId> --org <organizationId>')\n return\n }\n\n try {\n const { resolve } = await createRequestContainer()\n const em = resolve<EntityManager>('em')\n\n // Read the simple approval workflow definition\n const approvalPath = path.join(__dirname, 'examples', 'simple-approval-definition.json')\n const approvalData = JSON.parse(fs.readFileSync(approvalPath, 'utf8'))\n\n // Check if it already exists\n const existing = await em.findOne(WorkflowDefinition, {\n workflowId: approvalData.workflowId,\n tenantId,\n organizationId,\n })\n\n if (existing) {\n console.log(`\u2139\uFE0F Simple approval workflow '${approvalData.workflowId}' already exists (ID: ${existing.id})`)\n return\n }\n\n // Create the workflow definition\n const workflow = em.create(WorkflowDefinition, {\n ...approvalData,\n tenantId,\n organizationId,\n })\n\n await em.persistAndFlush(workflow)\n\n console.log(`\u2705 Seeded simple approval workflow: ${workflow.workflowName}`)\n console.log(` - ID: ${workflow.id}`)\n console.log(` - Workflow ID: ${workflow.workflowId}`)\n console.log(` - Version: ${workflow.version}`)\n console.log(` - Steps: ${workflow.definition.steps.length}`)\n console.log(` - Transitions: ${workflow.definition.transitions.length}`)\n console.log('')\n console.log('Simple approval workflow is ready!')\n } catch (error) {\n console.error('Error seeding simple approval workflow:', error)\n throw error\n }\n },\n}\n\n/**\n * Start workflow activity worker\n */\nconst startWorker: ModuleCli = {\n command: 'start-worker',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const concurrency = parseInt(args.concurrency ?? args.c ?? '5')\n\n const strategy = process.env.QUEUE_STRATEGY === 'async' ? 'async' : 'local'\n\n console.log('[Workflow Worker] Starting activity worker...')\n console.log(`[Workflow Worker] Strategy: ${strategy}`)\n\n if (strategy === 'local') {\n const pollMs = process.env.LOCAL_QUEUE_POLL_MS || '5000'\n console.log(`[Workflow Worker] Polling interval: ${pollMs}ms`)\n console.log('[Workflow Worker] NOTE: Local strategy is for development only.')\n console.log('[Workflow Worker] Use QUEUE_STRATEGY=async with Redis for production.')\n } else {\n console.log(`[Workflow Worker] Concurrency: ${concurrency}`)\n console.log(`[Workflow Worker] Redis: ${process.env.REDIS_URL || process.env.QUEUE_REDIS_URL}`)\n }\n\n try {\n const container = await createRequestContainer()\n const em = container.resolve<EntityManager>('em')\n\n // Import queue and handler\n const { runWorker } = await import('@open-mercato/queue/worker')\n const { createActivityWorkerHandler } = await import('./lib/activity-worker-handler')\n const { WORKFLOW_ACTIVITIES_QUEUE_NAME } = await import('./lib/activity-queue-types')\n\n // Create handler\n const handler = createActivityWorkerHandler(em, container)\n\n // Run worker\n await runWorker({\n queueName: WORKFLOW_ACTIVITIES_QUEUE_NAME,\n handler,\n connection: strategy === 'async' ? {\n url: process.env.REDIS_URL || process.env.QUEUE_REDIS_URL,\n } : undefined,\n concurrency,\n gracefulShutdown: true,\n })\n } catch (error) {\n console.error('[Workflow Worker] Failed to start worker:', error)\n throw error\n }\n },\n}\n\n/**\n * Seed all example workflows\n */\nconst seedAll: ModuleCli = {\n command: 'seed-all',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const tenantId = String(args.tenantId ?? args.tenant ?? args.t ?? '')\n const organizationId = String(args.organizationId ?? args.orgId ?? args.org ?? args.o ?? '')\n\n if (!tenantId || !organizationId) {\n console.error('Usage: mercato workflows seed-all --tenant <tenantId> --org <organizationId>')\n return\n }\n\n console.log('\uD83E\uDDE9 Seeding all example workflows...\\n')\n\n try {\n // Seed demo checkout with rules\n await seedDemoWithRules.run(rest)\n console.log('')\n\n // Seed sales pipeline\n await seedSalesPipeline.run(rest)\n console.log('')\n\n // Seed simple approval\n await seedSimpleApproval.run(rest)\n console.log('')\n\n console.log('\u2705 All example workflows seeded successfully!')\n } catch (error) {\n console.error('Error seeding workflows:', error)\n throw error\n }\n },\n}\n\n/**\n * Manually process pending workflow activities\n */\nconst processActivities: ModuleCli = {\n command: 'process-activities',\n async run(rest: string[]) {\n const args = parseArgs(rest)\n const limit = parseInt(args.limit ?? args.l ?? '0')\n\n console.log('[Workflow Activities] Processing pending activities...')\n if (limit > 0) {\n console.log(`[Workflow Activities] Limit: ${limit} jobs`)\n }\n\n try {\n const container = await createRequestContainer()\n const em = container.resolve<EntityManager>('em')\n\n // Import queue and handler\n const { createQueue } = await import('@open-mercato/queue')\n const { createActivityWorkerHandler } = await import('./lib/activity-worker-handler')\n const { WORKFLOW_ACTIVITIES_QUEUE_NAME } = await import('./lib/activity-queue-types')\n\n // Create queue instance\n const queue = createQueue(WORKFLOW_ACTIVITIES_QUEUE_NAME, 'local', {\n baseDir: process.env.QUEUE_BASE_DIR || '.queue',\n })\n\n // Create handler\n const handler = createActivityWorkerHandler(em, container)\n\n // Get initial counts\n const initialCounts = await queue.getJobCounts()\n console.log(`[Workflow Activities] Pending jobs: ${initialCounts.waiting}`)\n\n if (initialCounts.waiting === 0) {\n console.log('[Workflow Activities] No jobs to process')\n await queue.close()\n return\n }\n\n // Process jobs\n const result = await queue.process(handler as any, limit > 0 ? { limit } : undefined)\n\n console.log(`\\n[Workflow Activities] \u2713 Processed ${result.processed} activities`)\n if (result.failed > 0) {\n console.log(`[Workflow Activities] \u2717 Failed: ${result.failed} activities`)\n }\n\n // Show remaining\n const finalCounts = await queue.getJobCounts()\n if (finalCounts.waiting > 0) {\n console.log(`[Workflow Activities] Remaining: ${finalCounts.waiting} jobs`)\n }\n\n await queue.close()\n } catch (error) {\n console.error('[Workflow Activities] Error processing activities:', error)\n throw error\n }\n },\n}\n\nconst workflowsCliCommands = [\n startWorker,\n processActivities,\n seedDemo,\n seedDemoWithRules,\n seedSalesPipeline,\n seedSimpleApproval,\n seedAll,\n]\n\nexport default workflowsCliCommands\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
7
|
}
|
|
@@ -341,81 +341,18 @@ WorkflowEvent = __decorateClass([
|
|
|
341
341
|
Index({ name: "workflow_events_event_type_idx", properties: ["eventType", "occurredAt"] }),
|
|
342
342
|
Index({ name: "workflow_events_tenant_org_idx", properties: ["tenantId", "organizationId"] })
|
|
343
343
|
], WorkflowEvent);
|
|
344
|
-
OptionalProps;
|
|
345
|
-
let WorkflowEventTrigger = class {
|
|
346
|
-
constructor() {
|
|
347
|
-
this.enabled = true;
|
|
348
|
-
this.priority = 0;
|
|
349
|
-
this.createdAt = /* @__PURE__ */ new Date();
|
|
350
|
-
this.updatedAt = /* @__PURE__ */ new Date();
|
|
351
|
-
}
|
|
352
|
-
};
|
|
353
|
-
__decorateClass([
|
|
354
|
-
PrimaryKey({ type: "uuid", defaultRaw: "gen_random_uuid()" })
|
|
355
|
-
], WorkflowEventTrigger.prototype, "id", 2);
|
|
356
|
-
__decorateClass([
|
|
357
|
-
Property({ name: "name", type: "varchar", length: 255 })
|
|
358
|
-
], WorkflowEventTrigger.prototype, "name", 2);
|
|
359
|
-
__decorateClass([
|
|
360
|
-
Property({ name: "description", type: "text", nullable: true })
|
|
361
|
-
], WorkflowEventTrigger.prototype, "description", 2);
|
|
362
|
-
__decorateClass([
|
|
363
|
-
Property({ name: "workflow_definition_id", type: "uuid" })
|
|
364
|
-
], WorkflowEventTrigger.prototype, "workflowDefinitionId", 2);
|
|
365
|
-
__decorateClass([
|
|
366
|
-
Property({ name: "event_pattern", type: "varchar", length: 255 })
|
|
367
|
-
], WorkflowEventTrigger.prototype, "eventPattern", 2);
|
|
368
|
-
__decorateClass([
|
|
369
|
-
Property({ name: "config", type: "jsonb", nullable: true })
|
|
370
|
-
], WorkflowEventTrigger.prototype, "config", 2);
|
|
371
|
-
__decorateClass([
|
|
372
|
-
Property({ name: "enabled", type: "boolean", default: true })
|
|
373
|
-
], WorkflowEventTrigger.prototype, "enabled", 2);
|
|
374
|
-
__decorateClass([
|
|
375
|
-
Property({ name: "priority", type: "integer", default: 0 })
|
|
376
|
-
], WorkflowEventTrigger.prototype, "priority", 2);
|
|
377
|
-
__decorateClass([
|
|
378
|
-
Property({ name: "tenant_id", type: "uuid" })
|
|
379
|
-
], WorkflowEventTrigger.prototype, "tenantId", 2);
|
|
380
|
-
__decorateClass([
|
|
381
|
-
Property({ name: "organization_id", type: "uuid" })
|
|
382
|
-
], WorkflowEventTrigger.prototype, "organizationId", 2);
|
|
383
|
-
__decorateClass([
|
|
384
|
-
Property({ name: "created_by", type: "varchar", length: 255, nullable: true })
|
|
385
|
-
], WorkflowEventTrigger.prototype, "createdBy", 2);
|
|
386
|
-
__decorateClass([
|
|
387
|
-
Property({ name: "updated_by", type: "varchar", length: 255, nullable: true })
|
|
388
|
-
], WorkflowEventTrigger.prototype, "updatedBy", 2);
|
|
389
|
-
__decorateClass([
|
|
390
|
-
Property({ name: "created_at", type: Date, onCreate: () => /* @__PURE__ */ new Date() })
|
|
391
|
-
], WorkflowEventTrigger.prototype, "createdAt", 2);
|
|
392
|
-
__decorateClass([
|
|
393
|
-
Property({ name: "updated_at", type: Date, onUpdate: () => /* @__PURE__ */ new Date() })
|
|
394
|
-
], WorkflowEventTrigger.prototype, "updatedAt", 2);
|
|
395
|
-
__decorateClass([
|
|
396
|
-
Property({ name: "deleted_at", type: Date, nullable: true })
|
|
397
|
-
], WorkflowEventTrigger.prototype, "deletedAt", 2);
|
|
398
|
-
WorkflowEventTrigger = __decorateClass([
|
|
399
|
-
Entity({ tableName: "workflow_event_triggers" }),
|
|
400
|
-
Index({ name: "workflow_event_triggers_event_pattern_idx", properties: ["eventPattern", "enabled"] }),
|
|
401
|
-
Index({ name: "workflow_event_triggers_definition_idx", properties: ["workflowDefinitionId"] }),
|
|
402
|
-
Index({ name: "workflow_event_triggers_tenant_org_idx", properties: ["tenantId", "organizationId"] }),
|
|
403
|
-
Index({ name: "workflow_event_triggers_enabled_priority_idx", properties: ["enabled", "priority"] })
|
|
404
|
-
], WorkflowEventTrigger);
|
|
405
344
|
var entities_default = [
|
|
406
345
|
WorkflowDefinition,
|
|
407
346
|
WorkflowInstance,
|
|
408
347
|
StepInstance,
|
|
409
348
|
UserTask,
|
|
410
|
-
WorkflowEvent
|
|
411
|
-
WorkflowEventTrigger
|
|
349
|
+
WorkflowEvent
|
|
412
350
|
];
|
|
413
351
|
export {
|
|
414
352
|
StepInstance,
|
|
415
353
|
UserTask,
|
|
416
354
|
WorkflowDefinition,
|
|
417
355
|
WorkflowEvent,
|
|
418
|
-
WorkflowEventTrigger,
|
|
419
356
|
WorkflowInstance,
|
|
420
357
|
entities_default as default
|
|
421
358
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/modules/workflows/data/entities.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Workflows Module - Database Entities\n *\n * MikroORM entities for workflow engine.\n */\n\nimport { Entity, PrimaryKey, Property, Index, Unique, OptionalProps } from '@mikro-orm/core'\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport type WorkflowStepType =\n | 'START'\n | 'END'\n | 'USER_TASK'\n | 'AUTOMATED'\n | 'PARALLEL_FORK'\n | 'PARALLEL_JOIN'\n | 'SUB_WORKFLOW'\n | 'WAIT_FOR_SIGNAL'\n | 'WAIT_FOR_TIMER'\n\nexport type WorkflowInstanceStatus =\n | 'RUNNING'\n | 'PAUSED'\n | 'COMPLETED'\n | 'FAILED'\n | 'CANCELLED'\n | 'COMPENSATING'\n | 'COMPENSATED'\n | 'WAITING_FOR_ACTIVITIES'\n\nexport type StepInstanceStatus =\n | 'PENDING'\n | 'ACTIVE'\n | 'COMPLETED'\n | 'FAILED'\n | 'SKIPPED'\n | 'CANCELLED'\n\nexport type UserTaskStatus =\n | 'PENDING'\n | 'IN_PROGRESS'\n | 'COMPLETED'\n | 'CANCELLED'\n | 'ESCALATED'\n\n// ============================================================================\n// Event Trigger Types\n// ============================================================================\n\nexport type TriggerFilterOperator =\n | 'eq'\n | 'neq'\n | 'gt'\n | 'gte'\n | 'lt'\n | 'lte'\n | 'contains'\n | 'startsWith'\n | 'endsWith'\n | 'in'\n | 'notIn'\n | 'exists'\n | 'notExists'\n | 'regex'\n\nexport interface TriggerFilterCondition {\n field: string // JSON path (e.g., \"status\", \"metadata.type\")\n operator: TriggerFilterOperator\n value: unknown\n}\n\nexport interface TriggerContextMapping {\n targetKey: string // Key in workflow initial context\n sourceExpression: string // Path from event payload (supports dot notation)\n defaultValue?: unknown\n}\n\nexport interface WorkflowEventTriggerConfig {\n filterConditions?: TriggerFilterCondition[]\n contextMapping?: TriggerContextMapping[]\n debounceMs?: number // Debounce rapid events\n maxConcurrentInstances?: number // Limit concurrent instances\n entityType?: string // Entity type for workflow instance metadata (e.g., \"SalesOrder\")\n}\n\n/**\n * WorkflowDefinitionTrigger - Embedded trigger configuration\n *\n * Triggers are now embedded directly in the workflow definition,\n * allowing users to configure event-based workflow starts during\n * workflow creation in the visual editor.\n */\nexport interface WorkflowDefinitionTrigger {\n triggerId: string\n name: string\n description?: string | null\n eventPattern: string // e.g., \"sales.orders.created\", \"customers.*\"\n config?: WorkflowEventTriggerConfig | null\n enabled: boolean\n priority: number\n}\n\n// ============================================================================\n// JSONB Structure Interfaces\n// ============================================================================\n\nexport interface WorkflowDefinitionData {\n steps: any[] // WorkflowStep[] - will define schema in validators.ts\n transitions: any[] // WorkflowTransition[] - will define schema in validators.ts\n triggers?: WorkflowDefinitionTrigger[] // Event triggers for automatic workflow start\n activities?: any[] // ActivityDefinition[] - will define schema in validators.ts\n queries?: any[]\n signals?: any[]\n timers?: any[]\n}\n\nexport interface WorkflowMetadata {\n tags?: string[]\n category?: string\n icon?: string\n}\n\nexport interface WorkflowInstanceMetadata {\n entityType?: string\n entityId?: string\n initiatedBy?: string\n labels?: Record<string, string>\n}\n\n// ============================================================================\n// Entity: WorkflowDefinition\n// ============================================================================\n\n/**\n * WorkflowDefinition entity\n *\n * Stores workflow definitions (templates) that can be instantiated\n * to create workflow instances.\n */\n@Entity({ tableName: 'workflow_definitions' })\n@Unique({ properties: ['workflowId', 'tenantId'] })\n@Index({ name: 'workflow_definitions_enabled_idx', properties: ['enabled'] })\n@Index({ name: 'workflow_definitions_tenant_org_idx', properties: ['tenantId', 'organizationId'] })\n@Index({ name: 'workflow_definitions_workflow_id_idx', properties: ['workflowId'] })\nexport class WorkflowDefinition {\n [OptionalProps]?: 'enabled' | 'version' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'workflow_id', type: 'varchar', length: 100 })\n workflowId!: string\n\n @Property({ name: 'workflow_name', type: 'varchar', length: 255 })\n workflowName!: string\n\n @Property({ name: 'description', type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'version', type: 'integer', default: 1 })\n version: number = 1\n\n @Property({ name: 'definition', type: 'jsonb' })\n definition!: WorkflowDefinitionData\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: WorkflowMetadata | null\n\n @Property({ name: 'enabled', type: 'boolean', default: true })\n enabled: boolean = true\n\n @Property({ name: 'effective_from', type: Date, nullable: true })\n effectiveFrom?: Date | null\n\n @Property({ name: 'effective_to', type: Date, nullable: true })\n effectiveTo?: Date | null\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'created_by', type: 'varchar', length: 255, nullable: true })\n createdBy?: string | null\n\n @Property({ name: 'updated_by', type: 'varchar', length: 255, nullable: true })\n updatedBy?: string | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// ============================================================================\n// Entity: WorkflowInstance\n// ============================================================================\n\n/**\n * WorkflowInstance entity\n *\n * Represents a running instance of a workflow definition.\n * Tracks the current state, context data, and execution status.\n */\n@Entity({ tableName: 'workflow_instances' })\n@Index({ name: 'workflow_instances_definition_status_idx', properties: ['definitionId', 'status'] })\n@Index({ name: 'workflow_instances_correlation_key_idx', properties: ['correlationKey'] })\n@Index({ name: 'workflow_instances_status_tenant_idx', properties: ['status', 'tenantId'] })\n@Index({ name: 'workflow_instances_current_step_idx', properties: ['currentStepId', 'status'] })\n@Index({ name: 'workflow_instances_tenant_org_idx', properties: ['tenantId', 'organizationId'] })\nexport class WorkflowInstance {\n [OptionalProps]?: 'retryCount' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'definition_id', type: 'uuid' })\n definitionId!: string\n\n @Property({ name: 'workflow_id', type: 'varchar', length: 100 })\n workflowId!: string\n\n @Property({ name: 'version', type: 'integer' })\n version!: number\n\n @Property({ name: 'status', type: 'varchar', length: 30 })\n status!: WorkflowInstanceStatus\n\n @Property({ name: 'current_step_id', type: 'varchar', length: 100 })\n currentStepId!: string\n\n @Property({ name: 'context', type: 'jsonb' })\n context!: Record<string, any>\n\n @Property({ name: 'correlation_key', type: 'varchar', length: 255, nullable: true })\n correlationKey?: string | null\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: WorkflowInstanceMetadata | null\n\n @Property({ name: 'started_at', type: Date })\n startedAt!: Date\n\n @Property({ name: 'completed_at', type: Date, nullable: true })\n completedAt?: Date | null\n\n @Property({ name: 'paused_at', type: Date, nullable: true })\n pausedAt?: Date | null\n\n @Property({ name: 'cancelled_at', type: Date, nullable: true })\n cancelledAt?: Date | null\n\n @Property({ name: 'error_message', type: 'text', nullable: true })\n errorMessage?: string | null\n\n @Property({ name: 'error_details', type: 'jsonb', nullable: true })\n errorDetails?: any | null\n\n @Property({ name: 'pending_transition', type: 'jsonb', nullable: true })\n pendingTransition?: {\n toStepId: string\n activityResults: any[]\n timestamp: Date\n } | null\n\n @Property({ name: 'retry_count', type: 'integer', default: 0 })\n retryCount: number = 0\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// ============================================================================\n// Entity: StepInstance\n// ============================================================================\n\n/**\n * StepInstance entity\n *\n * Tracks individual step executions within a workflow instance.\n * Records input/output data, timing, and execution status for each step.\n */\n@Entity({ tableName: 'step_instances' })\n@Index({ name: 'step_instances_workflow_instance_idx', properties: ['workflowInstanceId', 'status'] })\n@Index({ name: 'step_instances_step_id_idx', properties: ['stepId', 'status'] })\n@Index({ name: 'step_instances_tenant_org_idx', properties: ['tenantId', 'organizationId'] })\nexport class StepInstance {\n [OptionalProps]?: 'retryCount' | 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'workflow_instance_id', type: 'uuid' })\n workflowInstanceId!: string\n\n @Property({ name: 'step_id', type: 'varchar', length: 100 })\n stepId!: string\n\n @Property({ name: 'step_name', type: 'varchar', length: 255 })\n stepName!: string\n\n @Property({ name: 'step_type', type: 'varchar', length: 50 })\n stepType!: string\n\n @Property({ name: 'status', type: 'varchar', length: 20 })\n status!: StepInstanceStatus\n\n @Property({ name: 'input_data', type: 'jsonb', nullable: true })\n inputData?: any | null\n\n @Property({ name: 'output_data', type: 'jsonb', nullable: true })\n outputData?: any | null\n\n @Property({ name: 'error_data', type: 'jsonb', nullable: true })\n errorData?: any | null\n\n @Property({ name: 'entered_at', type: Date, nullable: true })\n enteredAt?: Date | null\n\n @Property({ name: 'exited_at', type: Date, nullable: true })\n exitedAt?: Date | null\n\n @Property({ name: 'execution_time_ms', type: 'integer', nullable: true })\n executionTimeMs?: number | null\n\n @Property({ name: 'retry_count', type: 'integer', default: 0 })\n retryCount: number = 0\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n}\n\n// ============================================================================\n// Entity: UserTask\n// ============================================================================\n\n/**\n * UserTask entity\n *\n * Represents user tasks that require human interaction within a workflow.\n * Tracks assignment, SLA, escalation, and completion status.\n */\n@Entity({ tableName: 'user_tasks' })\n@Index({ name: 'user_tasks_workflow_instance_idx', properties: ['workflowInstanceId'] })\n@Index({ name: 'user_tasks_status_assigned_idx', properties: ['status', 'assignedTo'] })\n@Index({ name: 'user_tasks_status_due_date_idx', properties: ['status', 'dueDate'] })\n@Index({ name: 'user_tasks_tenant_org_idx', properties: ['tenantId', 'organizationId'] })\nexport class UserTask {\n [OptionalProps]?: 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'workflow_instance_id', type: 'uuid' })\n workflowInstanceId!: string\n\n @Property({ name: 'step_instance_id', type: 'uuid' })\n stepInstanceId!: string\n\n @Property({ name: 'task_name', type: 'varchar', length: 255 })\n taskName!: string\n\n @Property({ name: 'description', type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'status', type: 'varchar', length: 20 })\n status!: UserTaskStatus\n\n @Property({ name: 'form_schema', type: 'jsonb', nullable: true })\n formSchema?: any | null\n\n @Property({ name: 'form_data', type: 'jsonb', nullable: true })\n formData?: any | null\n\n @Property({ name: 'assigned_to', type: 'varchar', length: 255, nullable: true })\n assignedTo?: string | null\n\n @Property({ name: 'assigned_to_roles', type: 'text[]', nullable: true })\n assignedToRoles?: string[] | null\n\n @Property({ name: 'claimed_by', type: 'varchar', length: 255, nullable: true })\n claimedBy?: string | null\n\n @Property({ name: 'claimed_at', type: Date, nullable: true })\n claimedAt?: Date | null\n\n @Property({ name: 'due_date', type: Date, nullable: true })\n dueDate?: Date | null\n\n @Property({ name: 'escalated_at', type: Date, nullable: true })\n escalatedAt?: Date | null\n\n @Property({ name: 'escalated_to', type: 'varchar', length: 255, nullable: true })\n escalatedTo?: string | null\n\n @Property({ name: 'completed_by', type: 'varchar', length: 255, nullable: true })\n completedBy?: string | null\n\n @Property({ name: 'completed_at', type: Date, nullable: true })\n completedAt?: Date | null\n\n @Property({ name: 'comments', type: 'text', nullable: true })\n comments?: string | null\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n}\n\n// ============================================================================\n// Entity: WorkflowEvent\n// ============================================================================\n\n/**\n * WorkflowEvent entity\n *\n * Event sourcing log for workflow execution history.\n * Records all events that occur during workflow execution for audit and replay.\n */\n@Entity({ tableName: 'workflow_events' })\n@Index({ name: 'workflow_events_instance_occurred_idx', properties: ['workflowInstanceId', 'occurredAt'] })\n@Index({ name: 'workflow_events_event_type_idx', properties: ['eventType', 'occurredAt'] })\n@Index({ name: 'workflow_events_tenant_org_idx', properties: ['tenantId', 'organizationId'] })\nexport class WorkflowEvent {\n @PrimaryKey({ type: 'bigint', autoincrement: true })\n id!: string\n\n @Property({ name: 'workflow_instance_id', type: 'uuid' })\n workflowInstanceId!: string\n\n @Property({ name: 'step_instance_id', type: 'uuid', nullable: true })\n stepInstanceId?: string | null\n\n @Property({ name: 'event_type', type: 'varchar', length: 50 })\n eventType!: string\n\n @Property({ name: 'event_data', type: 'jsonb' })\n eventData!: any\n\n @Property({ name: 'occurred_at', type: Date, onCreate: () => new Date() })\n occurredAt: Date = new Date()\n\n @Property({ name: 'user_id', type: 'varchar', length: 255, nullable: true })\n userId?: string | null\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n}\n\n// ============================================================================\n// Entity: WorkflowEventTrigger\n// ============================================================================\n\n/**\n * WorkflowEventTrigger entity\n *\n * Maps event patterns to workflow definitions for automatic triggering.\n * When a matching event is emitted, the corresponding workflow is started\n * with context mapped from the event payload.\n */\n@Entity({ tableName: 'workflow_event_triggers' })\n@Index({ name: 'workflow_event_triggers_event_pattern_idx', properties: ['eventPattern', 'enabled'] })\n@Index({ name: 'workflow_event_triggers_definition_idx', properties: ['workflowDefinitionId'] })\n@Index({ name: 'workflow_event_triggers_tenant_org_idx', properties: ['tenantId', 'organizationId'] })\n@Index({ name: 'workflow_event_triggers_enabled_priority_idx', properties: ['enabled', 'priority'] })\nexport class WorkflowEventTrigger {\n [OptionalProps]?: 'enabled' | 'priority' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'name', type: 'varchar', length: 255 })\n name!: string\n\n @Property({ name: 'description', type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'workflow_definition_id', type: 'uuid' })\n workflowDefinitionId!: string\n\n @Property({ name: 'event_pattern', type: 'varchar', length: 255 })\n eventPattern!: string\n\n @Property({ name: 'config', type: 'jsonb', nullable: true })\n config?: WorkflowEventTriggerConfig | null\n\n @Property({ name: 'enabled', type: 'boolean', default: true })\n enabled: boolean = true\n\n @Property({ name: 'priority', type: 'integer', default: 0 })\n priority: number = 0\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'created_by', type: 'varchar', length: 255, nullable: true })\n createdBy?: string | null\n\n @Property({ name: 'updated_by', type: 'varchar', length: 255, nullable: true })\n updatedBy?: string | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// Export all entities as default for MikroORM discovery\nexport default [\n WorkflowDefinition,\n WorkflowInstance,\n StepInstance,\n UserTask,\n WorkflowEvent,\n WorkflowEventTrigger,\n]\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["/**\n * Workflows Module - Database Entities\n *\n * MikroORM entities for workflow engine.\n */\n\nimport { Entity, PrimaryKey, Property, Index, Unique, OptionalProps } from '@mikro-orm/core'\n\n// ============================================================================\n// Type Definitions\n// ============================================================================\n\nexport type WorkflowStepType =\n | 'START'\n | 'END'\n | 'USER_TASK'\n | 'AUTOMATED'\n | 'PARALLEL_FORK'\n | 'PARALLEL_JOIN'\n | 'SUB_WORKFLOW'\n | 'WAIT_FOR_SIGNAL'\n | 'WAIT_FOR_TIMER'\n\nexport type WorkflowInstanceStatus =\n | 'RUNNING'\n | 'PAUSED'\n | 'COMPLETED'\n | 'FAILED'\n | 'CANCELLED'\n | 'COMPENSATING'\n | 'COMPENSATED'\n | 'WAITING_FOR_ACTIVITIES'\n\nexport type StepInstanceStatus =\n | 'PENDING'\n | 'ACTIVE'\n | 'COMPLETED'\n | 'FAILED'\n | 'SKIPPED'\n | 'CANCELLED'\n\nexport type UserTaskStatus =\n | 'PENDING'\n | 'IN_PROGRESS'\n | 'COMPLETED'\n | 'CANCELLED'\n | 'ESCALATED'\n\n// ============================================================================\n// JSONB Structure Interfaces\n// ============================================================================\n\nexport interface WorkflowDefinitionData {\n steps: any[] // WorkflowStep[] - will define schema in validators.ts\n transitions: any[] // WorkflowTransition[] - will define schema in validators.ts\n activities?: any[] // ActivityDefinition[] - will define schema in validators.ts\n queries?: any[]\n signals?: any[]\n timers?: any[]\n}\n\nexport interface WorkflowMetadata {\n tags?: string[]\n category?: string\n icon?: string\n}\n\nexport interface WorkflowInstanceMetadata {\n entityType?: string\n entityId?: string\n initiatedBy?: string\n labels?: Record<string, string>\n}\n\n// ============================================================================\n// Entity: WorkflowDefinition\n// ============================================================================\n\n/**\n * WorkflowDefinition entity\n *\n * Stores workflow definitions (templates) that can be instantiated\n * to create workflow instances.\n */\n@Entity({ tableName: 'workflow_definitions' })\n@Unique({ properties: ['workflowId', 'tenantId'] })\n@Index({ name: 'workflow_definitions_enabled_idx', properties: ['enabled'] })\n@Index({ name: 'workflow_definitions_tenant_org_idx', properties: ['tenantId', 'organizationId'] })\n@Index({ name: 'workflow_definitions_workflow_id_idx', properties: ['workflowId'] })\nexport class WorkflowDefinition {\n [OptionalProps]?: 'enabled' | 'version' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'workflow_id', type: 'varchar', length: 100 })\n workflowId!: string\n\n @Property({ name: 'workflow_name', type: 'varchar', length: 255 })\n workflowName!: string\n\n @Property({ name: 'description', type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'version', type: 'integer', default: 1 })\n version: number = 1\n\n @Property({ name: 'definition', type: 'jsonb' })\n definition!: WorkflowDefinitionData\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: WorkflowMetadata | null\n\n @Property({ name: 'enabled', type: 'boolean', default: true })\n enabled: boolean = true\n\n @Property({ name: 'effective_from', type: Date, nullable: true })\n effectiveFrom?: Date | null\n\n @Property({ name: 'effective_to', type: Date, nullable: true })\n effectiveTo?: Date | null\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'created_by', type: 'varchar', length: 255, nullable: true })\n createdBy?: string | null\n\n @Property({ name: 'updated_by', type: 'varchar', length: 255, nullable: true })\n updatedBy?: string | null\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// ============================================================================\n// Entity: WorkflowInstance\n// ============================================================================\n\n/**\n * WorkflowInstance entity\n *\n * Represents a running instance of a workflow definition.\n * Tracks the current state, context data, and execution status.\n */\n@Entity({ tableName: 'workflow_instances' })\n@Index({ name: 'workflow_instances_definition_status_idx', properties: ['definitionId', 'status'] })\n@Index({ name: 'workflow_instances_correlation_key_idx', properties: ['correlationKey'] })\n@Index({ name: 'workflow_instances_status_tenant_idx', properties: ['status', 'tenantId'] })\n@Index({ name: 'workflow_instances_current_step_idx', properties: ['currentStepId', 'status'] })\n@Index({ name: 'workflow_instances_tenant_org_idx', properties: ['tenantId', 'organizationId'] })\nexport class WorkflowInstance {\n [OptionalProps]?: 'retryCount' | 'createdAt' | 'updatedAt' | 'deletedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'definition_id', type: 'uuid' })\n definitionId!: string\n\n @Property({ name: 'workflow_id', type: 'varchar', length: 100 })\n workflowId!: string\n\n @Property({ name: 'version', type: 'integer' })\n version!: number\n\n @Property({ name: 'status', type: 'varchar', length: 30 })\n status!: WorkflowInstanceStatus\n\n @Property({ name: 'current_step_id', type: 'varchar', length: 100 })\n currentStepId!: string\n\n @Property({ name: 'context', type: 'jsonb' })\n context!: Record<string, any>\n\n @Property({ name: 'correlation_key', type: 'varchar', length: 255, nullable: true })\n correlationKey?: string | null\n\n @Property({ name: 'metadata', type: 'jsonb', nullable: true })\n metadata?: WorkflowInstanceMetadata | null\n\n @Property({ name: 'started_at', type: Date })\n startedAt!: Date\n\n @Property({ name: 'completed_at', type: Date, nullable: true })\n completedAt?: Date | null\n\n @Property({ name: 'paused_at', type: Date, nullable: true })\n pausedAt?: Date | null\n\n @Property({ name: 'cancelled_at', type: Date, nullable: true })\n cancelledAt?: Date | null\n\n @Property({ name: 'error_message', type: 'text', nullable: true })\n errorMessage?: string | null\n\n @Property({ name: 'error_details', type: 'jsonb', nullable: true })\n errorDetails?: any | null\n\n @Property({ name: 'pending_transition', type: 'jsonb', nullable: true })\n pendingTransition?: {\n toStepId: string\n activityResults: any[]\n timestamp: Date\n } | null\n\n @Property({ name: 'retry_count', type: 'integer', default: 0 })\n retryCount: number = 0\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n\n @Property({ name: 'deleted_at', type: Date, nullable: true })\n deletedAt?: Date | null\n}\n\n// ============================================================================\n// Entity: StepInstance\n// ============================================================================\n\n/**\n * StepInstance entity\n *\n * Tracks individual step executions within a workflow instance.\n * Records input/output data, timing, and execution status for each step.\n */\n@Entity({ tableName: 'step_instances' })\n@Index({ name: 'step_instances_workflow_instance_idx', properties: ['workflowInstanceId', 'status'] })\n@Index({ name: 'step_instances_step_id_idx', properties: ['stepId', 'status'] })\n@Index({ name: 'step_instances_tenant_org_idx', properties: ['tenantId', 'organizationId'] })\nexport class StepInstance {\n [OptionalProps]?: 'retryCount' | 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'workflow_instance_id', type: 'uuid' })\n workflowInstanceId!: string\n\n @Property({ name: 'step_id', type: 'varchar', length: 100 })\n stepId!: string\n\n @Property({ name: 'step_name', type: 'varchar', length: 255 })\n stepName!: string\n\n @Property({ name: 'step_type', type: 'varchar', length: 50 })\n stepType!: string\n\n @Property({ name: 'status', type: 'varchar', length: 20 })\n status!: StepInstanceStatus\n\n @Property({ name: 'input_data', type: 'jsonb', nullable: true })\n inputData?: any | null\n\n @Property({ name: 'output_data', type: 'jsonb', nullable: true })\n outputData?: any | null\n\n @Property({ name: 'error_data', type: 'jsonb', nullable: true })\n errorData?: any | null\n\n @Property({ name: 'entered_at', type: Date, nullable: true })\n enteredAt?: Date | null\n\n @Property({ name: 'exited_at', type: Date, nullable: true })\n exitedAt?: Date | null\n\n @Property({ name: 'execution_time_ms', type: 'integer', nullable: true })\n executionTimeMs?: number | null\n\n @Property({ name: 'retry_count', type: 'integer', default: 0 })\n retryCount: number = 0\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n}\n\n// ============================================================================\n// Entity: UserTask\n// ============================================================================\n\n/**\n * UserTask entity\n *\n * Represents user tasks that require human interaction within a workflow.\n * Tracks assignment, SLA, escalation, and completion status.\n */\n@Entity({ tableName: 'user_tasks' })\n@Index({ name: 'user_tasks_workflow_instance_idx', properties: ['workflowInstanceId'] })\n@Index({ name: 'user_tasks_status_assigned_idx', properties: ['status', 'assignedTo'] })\n@Index({ name: 'user_tasks_status_due_date_idx', properties: ['status', 'dueDate'] })\n@Index({ name: 'user_tasks_tenant_org_idx', properties: ['tenantId', 'organizationId'] })\nexport class UserTask {\n [OptionalProps]?: 'createdAt' | 'updatedAt'\n\n @PrimaryKey({ type: 'uuid', defaultRaw: 'gen_random_uuid()' })\n id!: string\n\n @Property({ name: 'workflow_instance_id', type: 'uuid' })\n workflowInstanceId!: string\n\n @Property({ name: 'step_instance_id', type: 'uuid' })\n stepInstanceId!: string\n\n @Property({ name: 'task_name', type: 'varchar', length: 255 })\n taskName!: string\n\n @Property({ name: 'description', type: 'text', nullable: true })\n description?: string | null\n\n @Property({ name: 'status', type: 'varchar', length: 20 })\n status!: UserTaskStatus\n\n @Property({ name: 'form_schema', type: 'jsonb', nullable: true })\n formSchema?: any | null\n\n @Property({ name: 'form_data', type: 'jsonb', nullable: true })\n formData?: any | null\n\n @Property({ name: 'assigned_to', type: 'varchar', length: 255, nullable: true })\n assignedTo?: string | null\n\n @Property({ name: 'assigned_to_roles', type: 'text[]', nullable: true })\n assignedToRoles?: string[] | null\n\n @Property({ name: 'claimed_by', type: 'varchar', length: 255, nullable: true })\n claimedBy?: string | null\n\n @Property({ name: 'claimed_at', type: Date, nullable: true })\n claimedAt?: Date | null\n\n @Property({ name: 'due_date', type: Date, nullable: true })\n dueDate?: Date | null\n\n @Property({ name: 'escalated_at', type: Date, nullable: true })\n escalatedAt?: Date | null\n\n @Property({ name: 'escalated_to', type: 'varchar', length: 255, nullable: true })\n escalatedTo?: string | null\n\n @Property({ name: 'completed_by', type: 'varchar', length: 255, nullable: true })\n completedBy?: string | null\n\n @Property({ name: 'completed_at', type: Date, nullable: true })\n completedAt?: Date | null\n\n @Property({ name: 'comments', type: 'text', nullable: true })\n comments?: string | null\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n\n @Property({ name: 'created_at', type: Date, onCreate: () => new Date() })\n createdAt: Date = new Date()\n\n @Property({ name: 'updated_at', type: Date, onUpdate: () => new Date() })\n updatedAt: Date = new Date()\n}\n\n// ============================================================================\n// Entity: WorkflowEvent\n// ============================================================================\n\n/**\n * WorkflowEvent entity\n *\n * Event sourcing log for workflow execution history.\n * Records all events that occur during workflow execution for audit and replay.\n */\n@Entity({ tableName: 'workflow_events' })\n@Index({ name: 'workflow_events_instance_occurred_idx', properties: ['workflowInstanceId', 'occurredAt'] })\n@Index({ name: 'workflow_events_event_type_idx', properties: ['eventType', 'occurredAt'] })\n@Index({ name: 'workflow_events_tenant_org_idx', properties: ['tenantId', 'organizationId'] })\nexport class WorkflowEvent {\n @PrimaryKey({ type: 'bigint', autoincrement: true })\n id!: string\n\n @Property({ name: 'workflow_instance_id', type: 'uuid' })\n workflowInstanceId!: string\n\n @Property({ name: 'step_instance_id', type: 'uuid', nullable: true })\n stepInstanceId?: string | null\n\n @Property({ name: 'event_type', type: 'varchar', length: 50 })\n eventType!: string\n\n @Property({ name: 'event_data', type: 'jsonb' })\n eventData!: any\n\n @Property({ name: 'occurred_at', type: Date, onCreate: () => new Date() })\n occurredAt: Date = new Date()\n\n @Property({ name: 'user_id', type: 'varchar', length: 255, nullable: true })\n userId?: string | null\n\n @Property({ name: 'tenant_id', type: 'uuid' })\n tenantId!: string\n\n @Property({ name: 'organization_id', type: 'uuid' })\n organizationId!: string\n}\n\n// Export all entities as default for MikroORM discovery\nexport default [\n WorkflowDefinition,\n WorkflowInstance,\n StepInstance,\n UserTask,\n WorkflowEvent,\n]\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|