@open-mercato/core 0.6.8-develop.7100.1.fbf66fca35 → 0.7.0
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/.turbo/turbo-build.log +1 -1
- package/dist/helpers/integration/api.js +1 -13
- package/dist/helpers/integration/api.js.map +2 -2
- package/dist/helpers/integration/communicationChannelsFixtures.js +0 -19
- package/dist/helpers/integration/communicationChannelsFixtures.js.map +2 -2
- package/dist/modules/api_keys/api/keys/route.js +1 -1
- package/dist/modules/api_keys/api/keys/route.js.map +2 -2
- package/dist/modules/api_keys/backend/api-keys/page.js +1 -3
- package/dist/modules/api_keys/backend/api-keys/page.js.map +2 -2
- package/dist/modules/attachments/api/route.js +2 -2
- package/dist/modules/attachments/api/route.js.map +2 -2
- package/dist/modules/attachments/components/AttachmentLibrary.js +0 -2
- package/dist/modules/attachments/components/AttachmentLibrary.js.map +2 -2
- package/dist/modules/attachments/di.js +1 -11
- package/dist/modules/attachments/di.js.map +2 -2
- package/dist/modules/attachments/index.js.map +1 -1
- package/dist/modules/attachments/lib/scoped-upload-service.js +2 -15
- package/dist/modules/attachments/lib/scoped-upload-service.js.map +2 -2
- package/dist/modules/attachments/lib/upload-limits.js +2 -6
- package/dist/modules/attachments/lib/upload-limits.js.map +2 -2
- package/dist/modules/audit_logs/backend/audit-logs/page.js +0 -6
- package/dist/modules/audit_logs/backend/audit-logs/page.js.map +2 -2
- package/dist/modules/audit_logs/lib/display-helpers.js +11 -19
- package/dist/modules/audit_logs/lib/display-helpers.js.map +2 -2
- package/dist/modules/audit_logs/services/actionLogService.js +12 -57
- package/dist/modules/audit_logs/services/actionLogService.js.map +3 -3
- package/dist/modules/auth/acl.js +5 -30
- package/dist/modules/auth/acl.js.map +2 -2
- package/dist/modules/auth/api/feature-check.js +2 -8
- package/dist/modules/auth/api/feature-check.js.map +2 -2
- package/dist/modules/auth/api/login.js +20 -4
- package/dist/modules/auth/api/login.js.map +2 -2
- package/dist/modules/auth/api/roles/acl/route.js +33 -28
- package/dist/modules/auth/api/roles/acl/route.js.map +2 -2
- package/dist/modules/auth/api/routeError.js +11 -0
- package/dist/modules/auth/api/routeError.js.map +7 -0
- package/dist/modules/auth/api/session/refresh.js +1 -25
- package/dist/modules/auth/api/session/refresh.js.map +2 -2
- package/dist/modules/auth/api/users/acl/route.js +73 -102
- package/dist/modules/auth/api/users/acl/route.js.map +2 -2
- package/dist/modules/auth/api/users/route.js +5 -13
- package/dist/modules/auth/api/users/route.js.map +2 -2
- package/dist/modules/auth/backend/roles/[id]/edit/page.meta.js +1 -5
- package/dist/modules/auth/backend/roles/[id]/edit/page.meta.js.map +2 -2
- package/dist/modules/auth/backend/roles/page.js +1 -3
- package/dist/modules/auth/backend/roles/page.js.map +2 -2
- package/dist/modules/auth/backend/users/[id]/edit/page.meta.js +1 -5
- package/dist/modules/auth/backend/users/[id]/edit/page.meta.js.map +2 -2
- package/dist/modules/auth/backend/users/page.js +1 -2
- package/dist/modules/auth/backend/users/page.js.map +2 -2
- package/dist/modules/auth/components/AclEditor.js +30 -39
- package/dist/modules/auth/components/AclEditor.js.map +2 -2
- package/dist/modules/auth/data/entities.js.map +2 -2
- package/dist/modules/auth/data/validators.js +1 -5
- package/dist/modules/auth/data/validators.js.map +2 -2
- package/dist/modules/auth/di.js +9 -35
- package/dist/modules/auth/di.js.map +2 -2
- package/dist/modules/auth/frontend/reset/[token]/page.js +0 -46
- package/dist/modules/auth/frontend/reset/[token]/page.js.map +2 -2
- package/dist/modules/auth/lib/grantChecks.js.map +2 -2
- package/dist/modules/auth/services/authService.js +2 -16
- package/dist/modules/auth/services/authService.js.map +2 -2
- package/dist/modules/auth/services/rbacService.js +24 -67
- package/dist/modules/auth/services/rbacService.js.map +3 -3
- package/dist/modules/business_rules/backend/logs/page.js +1 -3
- package/dist/modules/business_rules/backend/logs/page.js.map +2 -2
- package/dist/modules/business_rules/backend/rules/[id]/page.meta.js +6 -1
- package/dist/modules/business_rules/backend/rules/[id]/page.meta.js.map +2 -2
- package/dist/modules/business_rules/backend/rules/create/page.meta.js +5 -1
- package/dist/modules/business_rules/backend/rules/create/page.meta.js.map +2 -2
- package/dist/modules/business_rules/backend/rules/page.js +1 -3
- package/dist/modules/business_rules/backend/rules/page.js.map +2 -2
- package/dist/modules/business_rules/backend/sets/[id]/page.meta.js +6 -1
- package/dist/modules/business_rules/backend/sets/[id]/page.meta.js.map +2 -2
- package/dist/modules/business_rules/backend/sets/create/page.meta.js +5 -1
- package/dist/modules/business_rules/backend/sets/create/page.meta.js.map +2 -2
- package/dist/modules/business_rules/backend/sets/page.js +1 -3
- package/dist/modules/business_rules/backend/sets/page.js.map +2 -2
- package/dist/modules/business_rules/lib/expression-evaluator.js +9 -9
- package/dist/modules/business_rules/lib/expression-evaluator.js.map +2 -2
- package/dist/modules/business_rules/lib/rule-evaluator.js +9 -10
- package/dist/modules/business_rules/lib/rule-evaluator.js.map +2 -2
- package/dist/modules/catalog/ai-agents.js +1 -1
- package/dist/modules/catalog/ai-agents.js.map +1 -1
- package/dist/modules/catalog/ai-tools/merchandising-pack.js +2 -2
- package/dist/modules/catalog/ai-tools/merchandising-pack.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/MerchandisingAssistantSheet.js +2 -5
- package/dist/modules/catalog/backend/catalog/products/MerchandisingAssistantSheet.js.map +2 -2
- package/dist/modules/catalog/components/categories/CategoriesDataTable.js +0 -2
- package/dist/modules/catalog/components/categories/CategoriesDataTable.js.map +2 -2
- package/dist/modules/catalog/components/products/ProductsDataTable.js +1 -7
- package/dist/modules/catalog/components/products/ProductsDataTable.js.map +2 -2
- package/dist/modules/catalog/widgets/injection/merchandising-assistant-trigger/widget.client.js +0 -2
- package/dist/modules/catalog/widgets/injection/merchandising-assistant-trigger/widget.client.js.map +2 -2
- package/dist/modules/communication_channels/api/post/channels/[id]/test-send/route.js +1 -9
- package/dist/modules/communication_channels/api/post/channels/[id]/test-send/route.js.map +2 -2
- package/dist/modules/communication_channels/api/post/test-seed/route.js +10 -95
- package/dist/modules/communication_channels/api/post/test-seed/route.js.map +2 -2
- package/dist/modules/communication_channels/backend/communication_channels/channels/page.js +0 -3
- package/dist/modules/communication_channels/backend/communication_channels/channels/page.js.map +2 -2
- package/dist/modules/communication_channels/commands/ingest-inbound-message.js +1 -14
- package/dist/modules/communication_channels/commands/ingest-inbound-message.js.map +2 -2
- package/dist/modules/communication_channels/di.js +1 -7
- package/dist/modules/communication_channels/di.js.map +2 -2
- package/dist/modules/communication_channels/lib/email-capabilities.js +1 -4
- package/dist/modules/communication_channels/lib/email-capabilities.js.map +2 -2
- package/dist/modules/communication_channels/lib/test-seed.js +2 -41
- package/dist/modules/communication_channels/lib/test-seed.js.map +2 -2
- package/dist/modules/configs/lib/system-status.js +0 -9
- package/dist/modules/configs/lib/system-status.js.map +2 -2
- package/dist/modules/currencies/backend/currencies/page.js +1 -3
- package/dist/modules/currencies/backend/currencies/page.js.map +2 -2
- package/dist/modules/currencies/backend/exchange-rates/page.js +1 -3
- package/dist/modules/currencies/backend/exchange-rates/page.js.map +2 -2
- package/dist/modules/customer_accounts/api/admin/domain-mappings.js +0 -9
- package/dist/modules/customer_accounts/api/admin/domain-mappings.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/roles/page.js +1 -3
- package/dist/modules/customer_accounts/backend/customer_accounts/roles/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/CustomerAccountsSettingsPageClient.js +84 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/CustomerAccountsSettingsPageClient.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/page.js +7 -81
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/PortalUsersPageClient.js +523 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/users/PortalUsersPageClient.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/PortalUserDetailPageClient.js +731 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/PortalUserDetailPageClient.js.map +7 -0
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js +7 -727
- package/dist/modules/customer_accounts/backend/customer_accounts/users/[id]/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js +7 -521
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js.map +2 -2
- package/dist/modules/customer_accounts/extension-points.js +1 -1
- package/dist/modules/customer_accounts/extension-points.js.map +2 -2
- package/dist/modules/customer_accounts/lib/portalUrl.js +69 -0
- package/dist/modules/customer_accounts/lib/portalUrl.js.map +7 -0
- package/dist/modules/customer_accounts/services/domainMappingService.js +0 -10
- package/dist/modules/customer_accounts/services/domainMappingService.js.map +2 -2
- package/dist/modules/customers/ai-tools/companies-pack.js +1 -4
- package/dist/modules/customers/ai-tools/companies-pack.js.map +2 -2
- package/dist/modules/customers/ai-tools/deal-analyzer-pack.js +2 -13
- package/dist/modules/customers/ai-tools/deal-analyzer-pack.js.map +2 -2
- package/dist/modules/customers/ai-tools/deals-pack.js +6 -52
- package/dist/modules/customers/ai-tools/deals-pack.js.map +2 -2
- package/dist/modules/customers/ai-tools/people-pack.js +1 -4
- package/dist/modules/customers/ai-tools/people-pack.js.map +2 -2
- package/dist/modules/customers/api/activities/route.js +6 -48
- package/dist/modules/customers/api/activities/route.js.map +2 -2
- package/dist/modules/customers/api/companies/[id]/people/route.js +64 -20
- package/dist/modules/customers/api/companies/[id]/people/route.js.map +2 -2
- package/dist/modules/customers/api/companies/[id]/route.js +94 -17
- package/dist/modules/customers/api/companies/[id]/route.js.map +2 -2
- package/dist/modules/customers/api/dashboard/widgets/customer-todos/route.js +5 -8
- package/dist/modules/customers/api/dashboard/widgets/customer-todos/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/companies/route.js +1 -1
- package/dist/modules/customers/api/deals/[id]/companies/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/people/route.js +1 -1
- package/dist/modules/customers/api/deals/[id]/people/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/route.js +25 -8
- package/dist/modules/customers/api/deals/[id]/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/stats/route.js +22 -3
- package/dist/modules/customers/api/deals/[id]/stats/route.js.map +2 -2
- package/dist/modules/customers/api/deals/aggregate/route.js +4 -11
- package/dist/modules/customers/api/deals/aggregate/route.js.map +2 -2
- package/dist/modules/customers/api/deals/map/route.js +1 -2
- package/dist/modules/customers/api/deals/map/route.js.map +2 -2
- package/dist/modules/customers/api/deals/route.js +1 -38
- package/dist/modules/customers/api/deals/route.js.map +2 -2
- package/dist/modules/customers/api/entity-roles-factory.js +4 -4
- package/dist/modules/customers/api/entity-roles-factory.js.map +2 -2
- package/dist/modules/customers/api/interactions/route.js +1 -3
- package/dist/modules/customers/api/interactions/route.js.map +2 -2
- package/dist/modules/customers/api/interactions/tasks/route.js +4 -27
- package/dist/modules/customers/api/interactions/tasks/route.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/companies/[linkId]/route.js +3 -4
- package/dist/modules/customers/api/people/[id]/companies/[linkId]/route.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/companies/context.js +1 -1
- package/dist/modules/customers/api/people/[id]/companies/context.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/companies/enriched/route.js +1 -1
- package/dist/modules/customers/api/people/[id]/companies/enriched/route.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/route.js +10 -11
- package/dist/modules/customers/api/people/[id]/route.js.map +2 -2
- package/dist/modules/customers/api/people/check-phone/route.js +9 -51
- package/dist/modules/customers/api/people/check-phone/route.js.map +2 -2
- package/dist/modules/customers/api/todos/route.js +5 -30
- package/dist/modules/customers/api/todos/route.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies/page.js +4 -6
- package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/[id]/page.js +1 -6
- package/dist/modules/customers/backend/customers/deals/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/page.js +4 -7
- package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/pipeline/components/Lane.js +13 -4
- package/dist/modules/customers/backend/customers/deals/pipeline/components/Lane.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/pipeline/components/StatusFilterPopover.js +14 -85
- package/dist/modules/customers/backend/customers/deals/pipeline/components/StatusFilterPopover.js.map +2 -2
- package/dist/modules/customers/backend/customers/people/page.js +4 -6
- package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
- package/dist/modules/customers/backend/hooks/useEmailDuplicateCheck.js +3 -9
- package/dist/modules/customers/backend/hooks/useEmailDuplicateCheck.js.map +2 -2
- package/dist/modules/customers/commands/deals.js +34 -21
- package/dist/modules/customers/commands/deals.js.map +2 -2
- package/dist/modules/customers/commands/interactions.js.map +1 -1
- package/dist/modules/customers/commands/personCompanyLinks.js +2 -131
- package/dist/modules/customers/commands/personCompanyLinks.js.map +2 -2
- package/dist/modules/customers/components/CustomerTodosTable.js +0 -1
- package/dist/modules/customers/components/CustomerTodosTable.js.map +2 -2
- package/dist/modules/customers/components/DealsKpiStrip.js +6 -7
- package/dist/modules/customers/components/DealsKpiStrip.js.map +2 -2
- package/dist/modules/customers/components/calendar/AgendaList.js +2 -2
- package/dist/modules/customers/components/calendar/AgendaList.js.map +2 -2
- package/dist/modules/customers/components/calendar/CalendarEventEditor.js +1 -1
- package/dist/modules/customers/components/calendar/CalendarEventEditor.js.map +2 -2
- package/dist/modules/customers/components/calendar/CalendarScreen.js +1 -1
- package/dist/modules/customers/components/calendar/CalendarScreen.js.map +2 -2
- package/dist/modules/customers/components/calendar/CalendarSettingsModal.js +1 -1
- package/dist/modules/customers/components/calendar/CalendarSettingsModal.js.map +2 -2
- package/dist/modules/customers/components/calendar/EventBlock.js +1 -1
- package/dist/modules/customers/components/calendar/EventBlock.js.map +2 -2
- package/dist/modules/customers/components/calendar/EventPeekPopover.js +2 -3
- package/dist/modules/customers/components/calendar/EventPeekPopover.js.map +2 -2
- package/dist/modules/customers/components/calendar/editor/PeopleField.js +5 -40
- package/dist/modules/customers/components/calendar/editor/PeopleField.js.map +2 -2
- package/dist/modules/customers/components/calendar/editor/hooks.js +1 -2
- package/dist/modules/customers/components/calendar/editor/hooks.js.map +2 -2
- package/dist/modules/customers/components/calendar/types.js +1 -1
- package/dist/modules/customers/components/calendar/types.js.map +2 -2
- package/dist/modules/customers/components/detail/AssignRoleDialog.js +33 -28
- package/dist/modules/customers/components/detail/AssignRoleDialog.js.map +2 -2
- package/dist/modules/customers/components/detail/CompanyKpiBar.js +4 -5
- package/dist/modules/customers/components/detail/CompanyKpiBar.js.map +2 -2
- package/dist/modules/customers/components/detail/CompanyPeopleSection.js +1 -3
- package/dist/modules/customers/components/detail/CompanyPeopleSection.js.map +2 -2
- package/dist/modules/customers/components/detail/DealForm.js +7 -19
- package/dist/modules/customers/components/detail/DealForm.js.map +2 -2
- package/dist/modules/customers/components/detail/DealsSection.js +5 -6
- package/dist/modules/customers/components/detail/DealsSection.js.map +2 -2
- package/dist/modules/customers/components/detail/EntityTagsDialog.js +11 -35
- package/dist/modules/customers/components/detail/EntityTagsDialog.js.map +2 -2
- package/dist/modules/customers/components/detail/PersonCompaniesSection.js +1 -3
- package/dist/modules/customers/components/detail/PersonCompaniesSection.js.map +2 -2
- package/dist/modules/customers/components/detail/hooks/usePersonTasks.js +13 -19
- package/dist/modules/customers/components/detail/hooks/usePersonTasks.js.map +2 -2
- package/dist/modules/customers/components/detail/schedule/ParticipantsField.js +4 -4
- package/dist/modules/customers/components/detail/schedule/ParticipantsField.js.map +2 -2
- package/dist/modules/customers/components/detail/schedule/useScheduleFormState.js +3 -3
- package/dist/modules/customers/components/detail/schedule/useScheduleFormState.js.map +2 -2
- package/dist/modules/customers/components/detail/utils.js +5 -5
- package/dist/modules/customers/components/detail/utils.js.map +2 -2
- package/dist/modules/customers/data/entities.js.map +1 -1
- package/dist/modules/customers/data/validators.js +3 -32
- package/dist/modules/customers/data/validators.js.map +2 -2
- package/dist/modules/customers/events.js +0 -5
- package/dist/modules/customers/events.js.map +2 -2
- package/dist/modules/customers/lib/calendar/conflicts.js +2 -8
- package/dist/modules/customers/lib/calendar/conflicts.js.map +2 -2
- package/dist/modules/customers/lib/calendar/editorPayload.js +2 -3
- package/dist/modules/customers/lib/calendar/editorPayload.js.map +2 -2
- package/dist/modules/customers/lib/calendar/mapItem.js +3 -8
- package/dist/modules/customers/lib/calendar/mapItem.js.map +2 -2
- package/dist/modules/customers/lib/dealStatus.js +0 -30
- package/dist/modules/customers/lib/dealStatus.js.map +2 -2
- package/dist/modules/customers/lib/findPeopleByAddresses.js +0 -1
- package/dist/modules/customers/lib/findPeopleByAddresses.js.map +2 -2
- package/dist/modules/customers/lib/personCompanies.js +2 -100
- package/dist/modules/customers/lib/personCompanies.js.map +2 -2
- package/dist/modules/customers/lib/todoCompatibility.js +0 -12
- package/dist/modules/customers/lib/todoCompatibility.js.map +2 -2
- package/dist/modules/dashboards/lib/widgetScope.js +1 -6
- package/dist/modules/dashboards/lib/widgetScope.js.map +2 -2
- package/dist/modules/data_sync/backend/data-sync/page.js +1 -3
- package/dist/modules/data_sync/backend/data-sync/page.js.map +2 -2
- package/dist/modules/data_sync/lib/sync-engine.js +6 -72
- package/dist/modules/data_sync/lib/sync-engine.js.map +2 -2
- package/dist/modules/data_sync/workers/sync-export.js +1 -5
- package/dist/modules/data_sync/workers/sync-export.js.map +2 -2
- package/dist/modules/data_sync/workers/sync-import.js +1 -5
- package/dist/modules/data_sync/workers/sync-import.js.map +2 -2
- package/dist/modules/devices/acl.js +1 -9
- package/dist/modules/devices/acl.js.map +2 -2
- package/dist/modules/devices/api/admin/devices/[id]/route.js +32 -5
- package/dist/modules/devices/api/admin/devices/[id]/route.js.map +2 -2
- package/dist/modules/devices/api/admin/devices/route.js +1 -14
- package/dist/modules/devices/api/admin/devices/route.js.map +2 -2
- package/dist/modules/devices/api/deviceList.js +12 -99
- package/dist/modules/devices/api/deviceList.js.map +2 -2
- package/dist/modules/devices/api/openapi.js +1 -3
- package/dist/modules/devices/api/openapi.js.map +2 -2
- package/dist/modules/devices/api/route.js +1 -9
- package/dist/modules/devices/api/route.js.map +2 -2
- package/dist/modules/devices/backend/devices/[id]/page.js +26 -10
- package/dist/modules/devices/backend/devices/[id]/page.js.map +2 -2
- package/dist/modules/devices/backend/devices/create/page.js +1 -17
- package/dist/modules/devices/backend/devices/create/page.js.map +2 -2
- package/dist/modules/devices/backend/devices/page.js +34 -28
- package/dist/modules/devices/backend/devices/page.js.map +2 -2
- package/dist/modules/devices/setup.js +2 -6
- package/dist/modules/devices/setup.js.map +2 -2
- package/dist/modules/directory/backend/directory/organizations/page.js +1 -2
- package/dist/modules/directory/backend/directory/organizations/page.js.map +2 -2
- package/dist/modules/directory/backend/directory/tenants/page.js +1 -2
- package/dist/modules/directory/backend/directory/tenants/page.js.map +2 -2
- package/dist/modules/directory/di.js +0 -9
- package/dist/modules/directory/di.js.map +2 -2
- package/dist/modules/directory/utils/organizationScope.js.map +2 -2
- package/dist/modules/entities/api/records.js +2 -4
- package/dist/modules/entities/api/records.js.map +2 -2
- package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js +1 -3
- package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js.map +2 -2
- package/dist/modules/eudr/api/plots/route.js +1 -5
- package/dist/modules/eudr/api/plots/route.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/evidence-submissions/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/evidence-submissions/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/evidence-submissions/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/evidence-submissions/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/evidence-submissions/page.js +0 -3
- package/dist/modules/eudr/backend/eudr/evidence-submissions/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/evidence-submissions/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/evidence-submissions/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/page.meta.js +2 -2
- package/dist/modules/eudr/backend/eudr/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/[id]/page.js +8 -2
- package/dist/modules/eudr/backend/eudr/plots/[id]/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/plots/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/create/page.js +8 -2
- package/dist/modules/eudr/backend/eudr/plots/create/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/plots/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/page.js +0 -3
- package/dist/modules/eudr/backend/eudr/plots/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/plots/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/plots/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/product-mappings/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/product-mappings/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/product-mappings/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/product-mappings/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/product-mappings/page.js +0 -3
- package/dist/modules/eudr/backend/eudr/product-mappings/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/product-mappings/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/product-mappings/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/risk-assessments/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/risk-assessments/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/risk-assessments/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/risk-assessments/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/risk-assessments/page.js +0 -3
- package/dist/modules/eudr/backend/eudr/risk-assessments/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/risk-assessments/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/risk-assessments/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/[id]/page.js +2 -0
- package/dist/modules/eudr/backend/eudr/statements/[id]/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/[id]/page.meta.js +3 -1
- package/dist/modules/eudr/backend/eudr/statements/[id]/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/create/page.meta.js +1 -0
- package/dist/modules/eudr/backend/eudr/statements/create/page.meta.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/page.js +30 -28
- package/dist/modules/eudr/backend/eudr/statements/page.js.map +2 -2
- package/dist/modules/eudr/backend/eudr/statements/page.meta.js +4 -1
- package/dist/modules/eudr/backend/eudr/statements/page.meta.js.map +2 -2
- package/dist/modules/eudr/commands/statements.js +8 -3
- package/dist/modules/eudr/commands/statements.js.map +2 -2
- package/dist/modules/eudr/components/crudErrorI18n.js +21 -1
- package/dist/modules/eudr/components/crudErrorI18n.js.map +2 -2
- package/dist/modules/eudr/components/formConfig.js +6 -2
- package/dist/modules/eudr/components/formConfig.js.map +2 -2
- package/dist/modules/eudr/data/validators.js +1 -4
- package/dist/modules/eudr/data/validators.js.map +2 -2
- package/dist/modules/eudr/lib/statement-lifecycle.js +9 -1
- package/dist/modules/eudr/lib/statement-lifecycle.js.map +2 -2
- package/dist/modules/feature_toggles/components/FeatureTogglesTable.js +0 -1
- package/dist/modules/feature_toggles/components/FeatureTogglesTable.js.map +2 -2
- package/dist/modules/feature_toggles/components/OverridesTable.js +0 -1
- package/dist/modules/feature_toggles/components/OverridesTable.js.map +2 -2
- package/dist/modules/feature_toggles/defaults.json +8 -0
- package/dist/modules/inbox_ops/backend/inbox-ops/log/page.js +0 -3
- package/dist/modules/inbox_ops/backend/inbox-ops/log/page.js.map +2 -2
- package/dist/modules/inbox_ops/backend/inbox-ops/page.js +0 -3
- package/dist/modules/inbox_ops/backend/inbox-ops/page.js.map +2 -2
- package/dist/modules/inbox_ops/lib/htmlToPlainText.js +12 -1
- package/dist/modules/inbox_ops/lib/htmlToPlainText.js.map +2 -2
- package/dist/modules/integrations/api/[id]/credentials/route.js +1 -6
- package/dist/modules/integrations/api/[id]/credentials/route.js.map +2 -2
- package/dist/modules/integrations/backend/integrations/[id]/page.js +29 -38
- package/dist/modules/integrations/backend/integrations/[id]/page.js.map +2 -2
- package/dist/modules/integrations/backend/integrations/bundle/[id]/page.js +9 -36
- package/dist/modules/integrations/backend/integrations/bundle/[id]/page.js.map +2 -2
- package/dist/modules/integrations/data/validators.js +3 -11
- package/dist/modules/integrations/data/validators.js.map +2 -2
- package/dist/modules/integrations/lib/credentials-masking.js +2 -6
- package/dist/modules/integrations/lib/credentials-masking.js.map +2 -2
- package/dist/modules/messages/api/[id]/route.js +1 -29
- package/dist/modules/messages/api/[id]/route.js.map +2 -2
- package/dist/modules/messages/api/openapi.js +2 -17
- package/dist/modules/messages/api/openapi.js.map +2 -2
- package/dist/modules/messages/api/route.js +2 -17
- package/dist/modules/messages/api/route.js.map +2 -2
- package/dist/modules/messages/components/MessagesInboxPageClient.js +14 -7
- package/dist/modules/messages/components/MessagesInboxPageClient.js.map +2 -2
- package/dist/modules/messages/components/inboxFilters.js +0 -15
- package/dist/modules/messages/components/inboxFilters.js.map +2 -2
- package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js +1 -11
- package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js.map +2 -2
- package/dist/modules/messages/components/message-detail/panels/MessageHeader.js +1 -3
- package/dist/modules/messages/components/message-detail/panels/MessageHeader.js.map +2 -2
- package/dist/modules/messages/components/message-detail/panels/thread-panel.js +1 -2
- package/dist/modules/messages/components/message-detail/panels/thread-panel.js.map +2 -2
- package/dist/modules/messages/components/messageListLabels.js +2 -14
- package/dist/modules/messages/components/messageListLabels.js.map +2 -2
- package/dist/modules/messages/data/validators.js +4 -18
- package/dist/modules/messages/data/validators.js.map +2 -2
- package/dist/modules/payment_gateways/api/webhook/[provider]/route.js +6 -4
- package/dist/modules/payment_gateways/api/webhook/[provider]/route.js.map +2 -2
- package/dist/modules/payment_gateways/backend/payment-gateways/page.js +1 -3
- package/dist/modules/payment_gateways/backend/payment-gateways/page.js.map +2 -2
- package/dist/modules/payment_gateways/lib/webhook-processor.js +0 -7
- package/dist/modules/payment_gateways/lib/webhook-processor.js.map +2 -2
- package/dist/modules/planner/backend/planner/availability-rulesets/page.js +0 -3
- package/dist/modules/planner/backend/planner/availability-rulesets/page.js.map +2 -2
- package/dist/modules/push_notifications/backend/push_notifications/page.js +1 -3
- package/dist/modules/push_notifications/backend/push_notifications/page.js.map +2 -2
- package/dist/modules/push_notifications/backend/push_notifications/send/page.js +1 -1
- package/dist/modules/push_notifications/backend/push_notifications/send/page.js.map +2 -2
- package/dist/modules/query_index/lib/engine.js +51 -150
- package/dist/modules/query_index/lib/engine.js.map +2 -2
- package/dist/modules/query_index/lib/search-tokens.js +3 -79
- package/dist/modules/query_index/lib/search-tokens.js.map +2 -2
- package/dist/modules/resources/backend/resources/resource-types/page.js +1 -3
- package/dist/modules/resources/backend/resources/resource-types/page.js.map +2 -2
- package/dist/modules/resources/backend/resources/resources/page.js +1 -3
- package/dist/modules/resources/backend/resources/resources/page.js.map +2 -2
- package/dist/modules/sales/backend/sales/channels/offers/page.js +0 -3
- package/dist/modules/sales/backend/sales/channels/offers/page.js.map +2 -2
- package/dist/modules/sales/backend/sales/channels/page.js +0 -3
- package/dist/modules/sales/backend/sales/channels/page.js.map +2 -2
- package/dist/modules/sales/backend/sales/documents/[id]/page.js +8 -10
- package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
- package/dist/modules/sales/commands/documents.js +1 -79
- package/dist/modules/sales/commands/documents.js.map +2 -2
- package/dist/modules/sales/components/PriceWithCurrency.js +5 -7
- package/dist/modules/sales/components/PriceWithCurrency.js.map +2 -2
- package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js +0 -3
- package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js.map +2 -2
- package/dist/modules/sales/components/documents/AdjustmentsSection.js +6 -8
- package/dist/modules/sales/components/documents/AdjustmentsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/ItemsSection.js +22 -51
- package/dist/modules/sales/components/documents/ItemsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/LineItemDialog.js +19 -84
- package/dist/modules/sales/components/documents/LineItemDialog.js.map +2 -2
- package/dist/modules/sales/components/documents/PaymentsSection.js +9 -23
- package/dist/modules/sales/components/documents/PaymentsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/ReturnsSection.js +6 -8
- package/dist/modules/sales/components/documents/ReturnsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesDocumentsTable.js +14 -68
- package/dist/modules/sales/components/documents/SalesDocumentsTable.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesOrderDraftLines.js +5 -6
- package/dist/modules/sales/components/documents/SalesOrderDraftLines.js.map +2 -2
- package/dist/modules/sales/components/documents/ShipmentDialog.js +4 -5
- package/dist/modules/sales/components/documents/ShipmentDialog.js.map +2 -2
- package/dist/modules/sales/components/documents/ShipmentsSection.js +6 -8
- package/dist/modules/sales/components/documents/ShipmentsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/lineItemUtils.js +2 -2
- package/dist/modules/sales/components/documents/lineItemUtils.js.map +2 -2
- package/dist/modules/sales/data/entities.js +2 -8
- package/dist/modules/sales/data/entities.js.map +2 -2
- package/dist/modules/sales/extension-points.js +0 -1
- package/dist/modules/sales/extension-points.js.map +2 -2
- package/dist/modules/sales/setup.js +0 -2
- package/dist/modules/sales/setup.js.map +2 -2
- package/dist/modules/sales/widgets/injection/document-history/widget.client.js +44 -2
- package/dist/modules/sales/widgets/injection/document-history/widget.client.js.map +2 -2
- package/dist/modules/sales/widgets/injection/payment-gateway-status-column/widget.js +2 -10
- package/dist/modules/sales/widgets/injection/payment-gateway-status-column/widget.js.map +2 -2
- package/dist/modules/sales/widgets/injection-table.js +7 -4
- package/dist/modules/sales/widgets/injection-table.js.map +2 -2
- package/dist/modules/staff/backend/staff/leave-requests/page.js +0 -3
- package/dist/modules/staff/backend/staff/leave-requests/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/my-leave-requests/page.js +0 -3
- package/dist/modules/staff/backend/staff/my-leave-requests/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/team-members/page.js +0 -3
- package/dist/modules/staff/backend/staff/team-members/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/team-roles/page.js +0 -3
- package/dist/modules/staff/backend/staff/team-roles/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js +0 -3
- package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/teams/page.js +0 -3
- package/dist/modules/staff/backend/staff/teams/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/timesheets/page.js +18 -29
- package/dist/modules/staff/backend/staff/timesheets/page.js.map +2 -2
- package/dist/modules/staff/backend/staff/timesheets/projects/page.js +0 -3
- package/dist/modules/staff/backend/staff/timesheets/projects/page.js.map +2 -2
- package/dist/modules/sync_excel/lib/adapters/customers.js +0 -1
- package/dist/modules/sync_excel/lib/adapters/customers.js.map +2 -2
- package/dist/modules/warranty_claims/api/assignees/route.js +3 -3
- package/dist/modules/warranty_claims/api/assignees/route.js.map +2 -2
- package/dist/modules/warranty_claims/api/portal/attachments/route.js +2 -2
- package/dist/modules/warranty_claims/api/portal/attachments/route.js.map +2 -2
- package/dist/modules/warranty_claims/api/portal/claims/route.js +9 -12
- package/dist/modules/warranty_claims/api/portal/claims/route.js.map +2 -2
- package/dist/modules/warranty_claims/backend/page.js +0 -3
- package/dist/modules/warranty_claims/backend/page.js.map +2 -2
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/page.js +0 -3
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/page.js.map +2 -2
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.js +0 -3
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.js.map +2 -2
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.js +0 -3
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.js.map +2 -2
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.js +0 -3
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.js.map +2 -2
- package/dist/modules/wms/api/warehouses/route.js +9 -13
- package/dist/modules/wms/api/warehouses/route.js.map +2 -2
- package/dist/modules/wms/api/zones/route.js +2 -15
- package/dist/modules/wms/api/zones/route.js.map +2 -2
- package/dist/modules/wms/commands/configuration.js +9 -121
- package/dist/modules/wms/commands/configuration.js.map +2 -2
- package/dist/modules/wms/commands/inventory-actions.js +0 -3
- package/dist/modules/wms/commands/inventory-actions.js.map +2 -2
- package/dist/modules/wms/commands/shared.js +1 -9
- package/dist/modules/wms/commands/shared.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsConfigurationPage.js +111 -76
- package/dist/modules/wms/components/backend/WmsConfigurationPage.js.map +3 -3
- package/dist/modules/wms/components/backend/WmsInventoryConsolePage.js +0 -1
- package/dist/modules/wms/components/backend/WmsInventoryConsolePage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLocationDetailPage.js +20 -16
- package/dist/modules/wms/components/backend/WmsLocationDetailPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLotDetailPage.js +10 -6
- package/dist/modules/wms/components/backend/WmsLotDetailPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLotsListPage.js +0 -1
- package/dist/modules/wms/components/backend/WmsLotsListPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsOperationalDashboardPage.js +11 -7
- package/dist/modules/wms/components/backend/WmsOperationalDashboardPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsSkuDetailPage.js +10 -6
- package/dist/modules/wms/components/backend/WmsSkuDetailPage.js.map +2 -2
- package/dist/modules/wms/components/backend/inventoryMutationLoaders.js +20 -27
- package/dist/modules/wms/components/backend/inventoryMutationLoaders.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/page.js +1 -3
- package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
- package/dist/modules/workflows/backend/events/page.js +1 -3
- package/dist/modules/workflows/backend/events/page.js.map +2 -2
- package/dist/modules/workflows/backend/instances/page.js +1 -3
- package/dist/modules/workflows/backend/instances/page.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/page.js +1 -3
- package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
- package/dist/modules/workflows/lib/activity-executor.js +0 -4
- package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
- package/package.json +10 -9
- package/src/helpers/integration/api.ts +1 -33
- package/src/helpers/integration/communicationChannelsFixtures.ts +1 -69
- package/src/modules/api_keys/api/keys/route.ts +1 -3
- package/src/modules/api_keys/backend/api-keys/page.tsx +1 -4
- package/src/modules/attachments/AGENTS.md +0 -15
- package/src/modules/attachments/api/route.ts +2 -2
- package/src/modules/attachments/components/AttachmentLibrary.tsx +0 -3
- package/src/modules/attachments/di.ts +0 -16
- package/src/modules/attachments/i18n/de.json +0 -5
- package/src/modules/attachments/i18n/en.json +0 -5
- package/src/modules/attachments/i18n/es.json +0 -5
- package/src/modules/attachments/i18n/ko.json +0 -5
- package/src/modules/attachments/i18n/pl.json +0 -5
- package/src/modules/attachments/index.ts +0 -10
- package/src/modules/attachments/lib/scoped-upload-service.ts +0 -46
- package/src/modules/attachments/lib/upload-limits.ts +2 -6
- package/src/modules/audit_logs/backend/audit-logs/page.tsx +0 -8
- package/src/modules/audit_logs/lib/display-helpers.tsx +32 -42
- package/src/modules/audit_logs/services/actionLogService.ts +11 -74
- package/src/modules/auth/acl.ts +6 -30
- package/src/modules/auth/api/feature-check.ts +3 -10
- package/src/modules/auth/api/login.ts +24 -9
- package/src/modules/auth/api/roles/acl/route.ts +39 -42
- package/src/modules/auth/api/routeError.ts +30 -0
- package/src/modules/auth/api/session/refresh.ts +1 -32
- package/src/modules/auth/api/users/acl/route.ts +101 -185
- package/src/modules/auth/api/users/route.ts +5 -18
- package/src/modules/auth/backend/roles/[id]/edit/page.meta.ts +2 -5
- package/src/modules/auth/backend/roles/page.tsx +2 -4
- package/src/modules/auth/backend/users/[id]/edit/page.meta.ts +2 -5
- package/src/modules/auth/backend/users/page.tsx +2 -3
- package/src/modules/auth/components/AclEditor.tsx +33 -63
- package/src/modules/auth/data/entities.ts +1 -4
- package/src/modules/auth/data/validators.ts +0 -5
- package/src/modules/auth/di.ts +16 -46
- package/src/modules/auth/frontend/reset/[token]/page.tsx +0 -74
- package/src/modules/auth/i18n/de.json +0 -389
- package/src/modules/auth/i18n/en.json +0 -389
- package/src/modules/auth/i18n/es.json +0 -389
- package/src/modules/auth/i18n/ko.json +0 -389
- package/src/modules/auth/i18n/pl.json +2 -391
- package/src/modules/auth/lib/grantChecks.ts +0 -6
- package/src/modules/auth/services/authService.ts +2 -18
- package/src/modules/auth/services/rbacService.ts +24 -110
- package/src/modules/business_rules/backend/logs/page.tsx +1 -4
- package/src/modules/business_rules/backend/rules/[id]/page.meta.ts +5 -0
- package/src/modules/business_rules/backend/rules/create/page.meta.ts +5 -1
- package/src/modules/business_rules/backend/rules/page.tsx +1 -4
- package/src/modules/business_rules/backend/sets/[id]/page.meta.ts +5 -0
- package/src/modules/business_rules/backend/sets/create/page.meta.ts +5 -1
- package/src/modules/business_rules/backend/sets/page.tsx +1 -4
- package/src/modules/business_rules/lib/expression-evaluator.ts +9 -9
- package/src/modules/business_rules/lib/rule-evaluator.ts +9 -10
- package/src/modules/catalog/ai-agents.ts +1 -1
- package/src/modules/catalog/ai-tools/merchandising-pack.ts +2 -2
- package/src/modules/catalog/backend/catalog/products/MerchandisingAssistantSheet.tsx +5 -12
- package/src/modules/catalog/components/categories/CategoriesDataTable.tsx +0 -3
- package/src/modules/catalog/components/products/ProductsDataTable.tsx +0 -7
- package/src/modules/catalog/i18n/de.json +0 -1
- package/src/modules/catalog/i18n/en.json +0 -1
- package/src/modules/catalog/i18n/es.json +0 -1
- package/src/modules/catalog/i18n/ko.json +0 -1
- package/src/modules/catalog/i18n/pl.json +0 -1
- package/src/modules/catalog/widgets/injection/merchandising-assistant-trigger/widget.client.tsx +0 -4
- package/src/modules/communication_channels/api/post/channels/[id]/test-send/route.ts +1 -17
- package/src/modules/communication_channels/api/post/test-seed/route.ts +16 -155
- package/src/modules/communication_channels/backend/communication_channels/channels/page.tsx +0 -4
- package/src/modules/communication_channels/commands/ingest-inbound-message.ts +1 -38
- package/src/modules/communication_channels/di.ts +0 -7
- package/src/modules/communication_channels/lib/adapter.ts +0 -14
- package/src/modules/communication_channels/lib/email-capabilities.ts +0 -4
- package/src/modules/communication_channels/lib/test-seed.ts +4 -64
- package/src/modules/configs/i18n/de.json +0 -2
- package/src/modules/configs/i18n/en.json +0 -2
- package/src/modules/configs/i18n/es.json +0 -2
- package/src/modules/configs/i18n/ko.json +0 -2
- package/src/modules/configs/i18n/pl.json +0 -2
- package/src/modules/configs/lib/system-status.ts +0 -9
- package/src/modules/currencies/backend/currencies/page.tsx +1 -4
- package/src/modules/currencies/backend/exchange-rates/page.tsx +1 -4
- package/src/modules/customer_accounts/api/admin/domain-mappings.ts +0 -7
- package/src/modules/customer_accounts/backend/customer_accounts/roles/page.tsx +1 -4
- package/src/modules/customer_accounts/backend/customer_accounts/settings/CustomerAccountsSettingsPageClient.tsx +138 -0
- package/src/modules/customer_accounts/backend/customer_accounts/settings/page.tsx +8 -132
- package/src/modules/customer_accounts/backend/customer_accounts/users/PortalUsersPageClient.tsx +598 -0
- package/src/modules/customer_accounts/backend/customer_accounts/users/[id]/PortalUserDetailPageClient.tsx +838 -0
- package/src/modules/customer_accounts/backend/customer_accounts/users/[id]/page.tsx +6 -838
- package/src/modules/customer_accounts/backend/customer_accounts/users/page.tsx +6 -590
- package/src/modules/customer_accounts/extension-points.ts +1 -1
- package/src/modules/customer_accounts/lib/portalUrl.ts +112 -0
- package/src/modules/customer_accounts/services/domainMappingService.ts +0 -10
- package/src/modules/customers/ai-tools/companies-pack.ts +1 -4
- package/src/modules/customers/ai-tools/deal-analyzer-pack.ts +2 -17
- package/src/modules/customers/ai-tools/deals-pack.ts +1 -66
- package/src/modules/customers/ai-tools/people-pack.ts +1 -4
- package/src/modules/customers/api/activities/route.ts +0 -45
- package/src/modules/customers/api/companies/[id]/people/route.ts +73 -24
- package/src/modules/customers/api/companies/[id]/route.ts +107 -24
- package/src/modules/customers/api/dashboard/widgets/customer-todos/route.ts +8 -16
- package/src/modules/customers/api/deals/[id]/companies/route.ts +1 -4
- package/src/modules/customers/api/deals/[id]/people/route.ts +1 -4
- package/src/modules/customers/api/deals/[id]/route.ts +28 -17
- package/src/modules/customers/api/deals/[id]/stats/route.ts +25 -10
- package/src/modules/customers/api/deals/aggregate/route.ts +4 -14
- package/src/modules/customers/api/deals/map/route.ts +0 -1
- package/src/modules/customers/api/deals/route.ts +1 -50
- package/src/modules/customers/api/entity-roles-factory.ts +4 -8
- package/src/modules/customers/api/interactions/route.ts +2 -8
- package/src/modules/customers/api/interactions/tasks/route.ts +1 -24
- package/src/modules/customers/api/people/[id]/companies/[linkId]/route.ts +4 -12
- package/src/modules/customers/api/people/[id]/companies/context.ts +1 -4
- package/src/modules/customers/api/people/[id]/companies/enriched/route.ts +1 -4
- package/src/modules/customers/api/people/[id]/route.ts +11 -16
- package/src/modules/customers/api/people/check-phone/route.ts +10 -75
- package/src/modules/customers/api/todos/route.ts +2 -27
- package/src/modules/customers/backend/customers/companies/page.tsx +4 -7
- package/src/modules/customers/backend/customers/deals/[id]/page.tsx +2 -7
- package/src/modules/customers/backend/customers/deals/page.tsx +4 -10
- package/src/modules/customers/backend/customers/deals/pipeline/components/Lane.tsx +14 -5
- package/src/modules/customers/backend/customers/deals/pipeline/components/StatusFilterPopover.tsx +27 -109
- package/src/modules/customers/backend/customers/people/page.tsx +4 -7
- package/src/modules/customers/backend/hooks/useEmailDuplicateCheck.ts +4 -12
- package/src/modules/customers/commands/deals.ts +59 -34
- package/src/modules/customers/commands/interactions.ts +1 -1
- package/src/modules/customers/commands/personCompanyLinks.ts +8 -224
- package/src/modules/customers/components/CustomerTodosTable.tsx +0 -2
- package/src/modules/customers/components/DealsKpiStrip.tsx +7 -7
- package/src/modules/customers/components/calendar/AgendaList.tsx +3 -3
- package/src/modules/customers/components/calendar/CalendarEventEditor.tsx +1 -1
- package/src/modules/customers/components/calendar/CalendarScreen.tsx +1 -1
- package/src/modules/customers/components/calendar/CalendarSettingsModal.tsx +1 -1
- package/src/modules/customers/components/calendar/EventBlock.tsx +2 -2
- package/src/modules/customers/components/calendar/EventPeekPopover.tsx +2 -4
- package/src/modules/customers/components/calendar/editor/PeopleField.tsx +5 -61
- package/src/modules/customers/components/calendar/editor/hooks.ts +1 -7
- package/src/modules/customers/components/calendar/types.ts +2 -2
- package/src/modules/customers/components/detail/AssignRoleDialog.tsx +12 -7
- package/src/modules/customers/components/detail/CompanyKpiBar.tsx +4 -5
- package/src/modules/customers/components/detail/CompanyPeopleSection.tsx +1 -8
- package/src/modules/customers/components/detail/DealForm.tsx +2 -22
- package/src/modules/customers/components/detail/DealsSection.tsx +5 -11
- package/src/modules/customers/components/detail/EntityTagsDialog.tsx +12 -58
- package/src/modules/customers/components/detail/PersonCompaniesSection.tsx +1 -8
- package/src/modules/customers/components/detail/hooks/usePersonTasks.ts +14 -23
- package/src/modules/customers/components/detail/schedule/ParticipantsField.tsx +5 -5
- package/src/modules/customers/components/detail/schedule/useScheduleFormState.ts +5 -5
- package/src/modules/customers/components/detail/types.ts +1 -1
- package/src/modules/customers/components/detail/utils.ts +5 -15
- package/src/modules/customers/data/entities.ts +1 -1
- package/src/modules/customers/data/validators.ts +9 -50
- package/src/modules/customers/events.ts +0 -5
- package/src/modules/customers/i18n/de.json +1 -9
- package/src/modules/customers/i18n/en.json +1 -9
- package/src/modules/customers/i18n/es.json +1 -9
- package/src/modules/customers/i18n/ko.json +1 -9
- package/src/modules/customers/i18n/pl.json +1 -9
- package/src/modules/customers/lib/calendar/conflicts.ts +2 -10
- package/src/modules/customers/lib/calendar/editorPayload.ts +3 -4
- package/src/modules/customers/lib/calendar/mapItem.ts +3 -8
- package/src/modules/customers/lib/dealStatus.ts +0 -42
- package/src/modules/customers/lib/findPeopleByAddresses.ts +6 -8
- package/src/modules/customers/lib/personCompanies.ts +1 -136
- package/src/modules/customers/lib/todoCompatibility.ts +1 -19
- package/src/modules/dashboards/i18n/es.json +4 -4
- package/src/modules/dashboards/i18n/pl.json +7 -7
- package/src/modules/dashboards/lib/widgetScope.ts +0 -6
- package/src/modules/data_sync/AGENTS.md +1 -1
- package/src/modules/data_sync/backend/data-sync/page.tsx +1 -4
- package/src/modules/data_sync/lib/adapter.ts +0 -36
- package/src/modules/data_sync/lib/sync-engine.ts +5 -113
- package/src/modules/data_sync/workers/sync-export.ts +0 -4
- package/src/modules/data_sync/workers/sync-import.ts +0 -4
- package/src/modules/devices/AGENTS.md +1 -20
- package/src/modules/devices/acl.ts +1 -9
- package/src/modules/devices/api/admin/devices/[id]/route.ts +34 -5
- package/src/modules/devices/api/admin/devices/route.ts +1 -14
- package/src/modules/devices/api/deviceList.ts +11 -135
- package/src/modules/devices/api/openapi.ts +1 -9
- package/src/modules/devices/api/route.ts +1 -9
- package/src/modules/devices/backend/devices/[id]/page.tsx +32 -18
- package/src/modules/devices/backend/devices/create/page.tsx +1 -17
- package/src/modules/devices/backend/devices/page.tsx +45 -44
- package/src/modules/devices/i18n/de.json +2 -3
- package/src/modules/devices/i18n/en.json +2 -3
- package/src/modules/devices/i18n/es.json +2 -3
- package/src/modules/devices/i18n/ko.json +2 -3
- package/src/modules/devices/i18n/pl.json +2 -3
- package/src/modules/devices/setup.ts +2 -6
- package/src/modules/directory/backend/directory/organizations/page.tsx +1 -3
- package/src/modules/directory/backend/directory/tenants/page.tsx +1 -3
- package/src/modules/directory/di.ts +2 -14
- package/src/modules/directory/utils/organizationScope.ts +15 -4
- package/src/modules/entities/api/records.ts +0 -2
- package/src/modules/entities/backend/entities/user/[entityId]/records/page.tsx +1 -4
- package/src/modules/eudr/api/plots/route.ts +0 -4
- package/src/modules/eudr/backend/eudr/evidence-submissions/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/evidence-submissions/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/evidence-submissions/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/evidence-submissions/page.tsx +0 -4
- package/src/modules/eudr/backend/eudr/page.meta.ts +2 -2
- package/src/modules/eudr/backend/eudr/plots/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/plots/[id]/page.tsx +8 -2
- package/src/modules/eudr/backend/eudr/plots/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/plots/create/page.tsx +8 -2
- package/src/modules/eudr/backend/eudr/plots/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/plots/page.tsx +0 -4
- package/src/modules/eudr/backend/eudr/product-mappings/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/product-mappings/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/product-mappings/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/product-mappings/page.tsx +0 -4
- package/src/modules/eudr/backend/eudr/risk-assessments/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/risk-assessments/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/risk-assessments/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/risk-assessments/page.tsx +0 -4
- package/src/modules/eudr/backend/eudr/statements/[id]/page.meta.ts +2 -0
- package/src/modules/eudr/backend/eudr/statements/[id]/page.tsx +2 -0
- package/src/modules/eudr/backend/eudr/statements/create/page.meta.ts +1 -0
- package/src/modules/eudr/backend/eudr/statements/page.meta.ts +4 -1
- package/src/modules/eudr/backend/eudr/statements/page.tsx +32 -30
- package/src/modules/eudr/commands/statements.ts +7 -2
- package/src/modules/eudr/components/crudErrorI18n.ts +31 -0
- package/src/modules/eudr/components/formConfig.tsx +9 -1
- package/src/modules/eudr/data/validators.ts +1 -16
- package/src/modules/eudr/i18n/de.json +3 -2
- package/src/modules/eudr/i18n/en.json +3 -2
- package/src/modules/eudr/i18n/es.json +3 -2
- package/src/modules/eudr/i18n/ko.json +3 -2
- package/src/modules/eudr/i18n/pl.json +3 -2
- package/src/modules/eudr/lib/statement-lifecycle.ts +8 -0
- package/src/modules/feature_toggles/components/FeatureTogglesTable.tsx +1 -2
- package/src/modules/feature_toggles/components/OverridesTable.tsx +1 -2
- package/src/modules/feature_toggles/defaults.json +8 -0
- package/src/modules/inbox_ops/backend/inbox-ops/log/page.tsx +0 -4
- package/src/modules/inbox_ops/backend/inbox-ops/page.tsx +0 -4
- package/src/modules/inbox_ops/lib/htmlToPlainText.ts +17 -1
- package/src/modules/integrations/api/[id]/credentials/route.ts +4 -6
- package/src/modules/integrations/backend/integrations/[id]/page.tsx +31 -61
- package/src/modules/integrations/backend/integrations/bundle/[id]/page.tsx +9 -44
- package/src/modules/integrations/data/validators.ts +2 -12
- package/src/modules/integrations/i18n/de.json +0 -1
- package/src/modules/integrations/i18n/en.json +0 -1
- package/src/modules/integrations/i18n/es.json +0 -1
- package/src/modules/integrations/i18n/ko.json +0 -1
- package/src/modules/integrations/i18n/pl.json +0 -1
- package/src/modules/integrations/lib/credentials-masking.ts +6 -10
- package/src/modules/messages/api/[id]/route.ts +1 -55
- package/src/modules/messages/api/openapi.ts +0 -20
- package/src/modules/messages/api/route.ts +2 -31
- package/src/modules/messages/components/MessagesInboxPageClient.tsx +16 -9
- package/src/modules/messages/components/inboxFilters.ts +0 -36
- package/src/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.ts +1 -14
- package/src/modules/messages/components/message-detail/panels/MessageHeader.tsx +1 -3
- package/src/modules/messages/components/message-detail/panels/thread-panel.tsx +1 -2
- package/src/modules/messages/components/message-detail/types.ts +0 -3
- package/src/modules/messages/components/messageListLabels.ts +3 -52
- package/src/modules/messages/data/validators.ts +4 -43
- package/src/modules/payment_gateways/api/webhook/[provider]/route.ts +6 -4
- package/src/modules/payment_gateways/backend/payment-gateways/page.tsx +1 -4
- package/src/modules/payment_gateways/lib/webhook-processor.ts +0 -11
- package/src/modules/planner/backend/planner/availability-rulesets/page.tsx +0 -4
- package/src/modules/push_notifications/backend/push_notifications/page.tsx +1 -4
- package/src/modules/push_notifications/backend/push_notifications/send/page.tsx +4 -4
- package/src/modules/query_index/lib/engine.ts +61 -249
- package/src/modules/query_index/lib/search-tokens.ts +3 -135
- package/src/modules/resources/backend/resources/resource-types/page.tsx +1 -4
- package/src/modules/resources/backend/resources/resources/page.tsx +1 -4
- package/src/modules/sales/backend/sales/channels/offers/page.tsx +0 -4
- package/src/modules/sales/backend/sales/channels/page.tsx +0 -4
- package/src/modules/sales/backend/sales/documents/[id]/page.tsx +8 -14
- package/src/modules/sales/commands/documents.ts +0 -93
- package/src/modules/sales/components/PriceWithCurrency.tsx +5 -17
- package/src/modules/sales/components/channels/SalesChannelOffersPanel.tsx +0 -4
- package/src/modules/sales/components/documents/AdjustmentsSection.tsx +5 -6
- package/src/modules/sales/components/documents/ItemsSection.tsx +18 -56
- package/src/modules/sales/components/documents/LineItemDialog.tsx +21 -138
- package/src/modules/sales/components/documents/PaymentsSection.tsx +9 -20
- package/src/modules/sales/components/documents/ReturnsSection.tsx +5 -6
- package/src/modules/sales/components/documents/SalesDocumentsTable.tsx +14 -106
- package/src/modules/sales/components/documents/SalesOrderDraftLines.tsx +5 -6
- package/src/modules/sales/components/documents/ShipmentDialog.tsx +4 -5
- package/src/modules/sales/components/documents/ShipmentsSection.tsx +5 -6
- package/src/modules/sales/components/documents/lineItemUtils.ts +2 -7
- package/src/modules/sales/data/entities.ts +0 -6
- package/src/modules/sales/extension-points.ts +0 -1
- package/src/modules/sales/i18n/de.json +37 -8
- package/src/modules/sales/i18n/en.json +37 -8
- package/src/modules/sales/i18n/es.json +37 -8
- package/src/modules/sales/i18n/ko.json +37 -8
- package/src/modules/sales/i18n/pl.json +37 -8
- package/src/modules/sales/migrations/.snapshot-open-mercato.json +0 -60
- package/src/modules/sales/setup.ts +0 -2
- package/src/modules/sales/widgets/injection/document-history/widget.client.tsx +42 -2
- package/src/modules/sales/widgets/injection/payment-gateway-status-column/widget.ts +1 -9
- package/src/modules/sales/widgets/injection-table.ts +7 -4
- package/src/modules/staff/backend/staff/leave-requests/page.tsx +0 -4
- package/src/modules/staff/backend/staff/my-leave-requests/page.tsx +0 -4
- package/src/modules/staff/backend/staff/team-members/page.tsx +0 -6
- package/src/modules/staff/backend/staff/team-roles/page.tsx +0 -4
- package/src/modules/staff/backend/staff/teams/[id]/edit/page.tsx +0 -4
- package/src/modules/staff/backend/staff/teams/page.tsx +0 -4
- package/src/modules/staff/backend/staff/timesheets/page.tsx +1 -12
- package/src/modules/staff/backend/staff/timesheets/projects/page.tsx +0 -4
- package/src/modules/sync_excel/lib/adapters/customers.ts +0 -5
- package/src/modules/warranty_claims/api/assignees/route.ts +3 -3
- package/src/modules/warranty_claims/api/portal/attachments/route.ts +2 -2
- package/src/modules/warranty_claims/api/portal/claims/route.ts +9 -12
- package/src/modules/warranty_claims/backend/page.tsx +0 -4
- package/src/modules/warranty_claims/backend/warranty_claims/registrations/page.tsx +0 -4
- package/src/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.tsx +0 -4
- package/src/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.tsx +0 -4
- package/src/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.tsx +0 -4
- package/src/modules/wms/api/warehouses/route.ts +9 -13
- package/src/modules/wms/api/zones/route.ts +0 -16
- package/src/modules/wms/commands/configuration.ts +10 -159
- package/src/modules/wms/commands/inventory-actions.ts +0 -3
- package/src/modules/wms/commands/shared.ts +0 -17
- package/src/modules/wms/components/backend/WmsConfigurationPage.tsx +141 -95
- package/src/modules/wms/components/backend/WmsInventoryConsolePage.tsx +0 -2
- package/src/modules/wms/components/backend/WmsLocationDetailPage.tsx +30 -26
- package/src/modules/wms/components/backend/WmsLotDetailPage.tsx +21 -17
- package/src/modules/wms/components/backend/WmsLotsListPage.tsx +0 -2
- package/src/modules/wms/components/backend/WmsOperationalDashboardPage.tsx +17 -13
- package/src/modules/wms/components/backend/WmsSkuDetailPage.tsx +16 -12
- package/src/modules/wms/components/backend/inventoryMutationLoaders.ts +20 -36
- package/src/modules/wms/i18n/de.json +0 -2
- package/src/modules/wms/i18n/en.json +0 -2
- package/src/modules/wms/i18n/es.json +0 -2
- package/src/modules/wms/i18n/ko.json +0 -2
- package/src/modules/wms/i18n/pl.json +0 -2
- package/src/modules/workflows/backend/definitions/page.tsx +1 -4
- package/src/modules/workflows/backend/events/page.tsx +1 -4
- package/src/modules/workflows/backend/instances/page.tsx +1 -4
- package/src/modules/workflows/backend/tasks/page.tsx +1 -4
- package/src/modules/workflows/lib/activity-executor.ts +0 -9
- package/dist/modules/api_keys/di.js +0 -9
- package/dist/modules/api_keys/di.js.map +0 -7
- package/dist/modules/api_keys/services/principalService.js +0 -31
- package/dist/modules/api_keys/services/principalService.js.map +0 -7
- package/dist/modules/attachments/lib/attachment-service.js +0 -313
- package/dist/modules/attachments/lib/attachment-service.js.map +0 -7
- package/dist/modules/auth/api/reset/validate.js +0 -55
- package/dist/modules/auth/api/reset/validate.js.map +0 -7
- package/dist/modules/auth/commands/acl.js +0 -254
- package/dist/modules/auth/commands/acl.js.map +0 -7
- package/dist/modules/auth/lib/userIdFilter.js +0 -16
- package/dist/modules/auth/lib/userIdFilter.js.map +0 -7
- package/dist/modules/auth/services/principalService.js +0 -200
- package/dist/modules/auth/services/principalService.js.map +0 -7
- package/dist/modules/auth/services/roleOrganizationScope.js +0 -41
- package/dist/modules/auth/services/roleOrganizationScope.js.map +0 -7
- package/dist/modules/communication_channels/lib/outbound-recipient.js +0 -33
- package/dist/modules/communication_channels/lib/outbound-recipient.js.map +0 -7
- package/dist/modules/communication_channels/lib/resolve-channel-type.js +0 -51
- package/dist/modules/communication_channels/lib/resolve-channel-type.js.map +0 -7
- package/dist/modules/customers/backend/customers/deals/pipeline/components/toneClasses.js +0 -18
- package/dist/modules/customers/backend/customers/deals/pipeline/components/toneClasses.js.map +0 -7
- package/dist/modules/customers/lib/calendar/participantIdentity.js +0 -9
- package/dist/modules/customers/lib/calendar/participantIdentity.js.map +0 -7
- package/dist/modules/customers/lib/closureStage.js +0 -45
- package/dist/modules/customers/lib/closureStage.js.map +0 -7
- package/dist/modules/customers/lib/detailReadAccess.js +0 -12
- package/dist/modules/customers/lib/detailReadAccess.js.map +0 -7
- package/dist/modules/data_sync/lib/abandoned-run.js +0 -19
- package/dist/modules/data_sync/lib/abandoned-run.js.map +0 -7
- package/dist/modules/devices/api/deviceSerialization.js +0 -46
- package/dist/modules/devices/api/deviceSerialization.js.map +0 -7
- package/dist/modules/devices/backend/devices/useDeviceUserLabels.js +0 -34
- package/dist/modules/devices/backend/devices/useDeviceUserLabels.js.map +0 -7
- package/dist/modules/devices/backend/devices/userOptions.js +0 -52
- package/dist/modules/devices/backend/devices/userOptions.js.map +0 -7
- package/dist/modules/directory/services/organizationHierarchyService.js +0 -29
- package/dist/modules/directory/services/organizationHierarchyService.js.map +0 -7
- package/dist/modules/directory/services/organizationScopeService.js +0 -56
- package/dist/modules/directory/services/organizationScopeService.js.map +0 -7
- package/dist/modules/integrations/backend/integrations/credential-secret-fields.js +0 -55
- package/dist/modules/integrations/backend/integrations/credential-secret-fields.js.map +0 -7
- package/dist/modules/messages/lib/channel-sender-identity.js +0 -26
- package/dist/modules/messages/lib/channel-sender-identity.js.map +0 -7
- package/dist/modules/messages/lib/composeSourceChannelType.js +0 -41
- package/dist/modules/messages/lib/composeSourceChannelType.js.map +0 -7
- package/dist/modules/query_index/lib/search-entity-policy.js +0 -14
- package/dist/modules/query_index/lib/search-entity-policy.js.map +0 -7
- package/dist/modules/sales/components/documents/lineItemShipmentLock.js +0 -54
- package/dist/modules/sales/components/documents/lineItemShipmentLock.js.map +0 -7
- package/dist/modules/sales/lib/salesChannelsToggleSeed.js +0 -33
- package/dist/modules/sales/lib/salesChannelsToggleSeed.js.map +0 -7
- package/dist/modules/sales/migrations/Migration20260821120000_sales_notes_addresses_context_idx.js +0 -32
- package/dist/modules/sales/migrations/Migration20260821120000_sales_notes_addresses_context_idx.js.map +0 -7
- package/dist/modules/wms/api/warehouseSearch.js +0 -21
- package/dist/modules/wms/api/warehouseSearch.js.map +0 -7
- package/dist/modules/wms/components/backend/WarehouseEditDialog.js +0 -158
- package/dist/modules/wms/components/backend/WarehouseEditDialog.js.map +0 -7
- package/dist/modules/wms/components/backend/warehouseFormOptions.js +0 -66
- package/dist/modules/wms/components/backend/warehouseFormOptions.js.map +0 -7
- package/src/modules/api_keys/di.ts +0 -7
- package/src/modules/api_keys/services/principalService.ts +0 -33
- package/src/modules/attachments/lib/attachment-service.ts +0 -468
- package/src/modules/auth/api/reset/validate.ts +0 -57
- package/src/modules/auth/commands/acl.ts +0 -495
- package/src/modules/auth/lib/userIdFilter.ts +0 -31
- package/src/modules/auth/services/principalService.ts +0 -266
- package/src/modules/auth/services/roleOrganizationScope.ts +0 -70
- package/src/modules/communication_channels/lib/outbound-recipient.ts +0 -71
- package/src/modules/communication_channels/lib/resolve-channel-type.ts +0 -99
- package/src/modules/customers/backend/customers/deals/pipeline/components/toneClasses.ts +0 -21
- package/src/modules/customers/lib/calendar/participantIdentity.ts +0 -17
- package/src/modules/customers/lib/closureStage.ts +0 -76
- package/src/modules/customers/lib/detailReadAccess.ts +0 -35
- package/src/modules/data_sync/lib/abandoned-run.ts +0 -56
- package/src/modules/devices/api/deviceSerialization.ts +0 -50
- package/src/modules/devices/backend/devices/useDeviceUserLabels.ts +0 -45
- package/src/modules/devices/backend/devices/userOptions.ts +0 -99
- package/src/modules/directory/services/organizationHierarchyService.ts +0 -34
- package/src/modules/directory/services/organizationScopeService.ts +0 -85
- package/src/modules/integrations/backend/integrations/credential-secret-fields.ts +0 -84
- package/src/modules/messages/lib/channel-sender-identity.ts +0 -55
- package/src/modules/messages/lib/composeSourceChannelType.ts +0 -95
- package/src/modules/query_index/lib/search-entity-policy.ts +0 -46
- package/src/modules/sales/components/documents/lineItemShipmentLock.ts +0 -74
- package/src/modules/sales/lib/salesChannelsToggleSeed.ts +0 -42
- package/src/modules/sales/migrations/Migration20260821120000_sales_notes_addresses_context_idx.ts +0 -87
- package/src/modules/wms/api/warehouseSearch.ts +0 -23
- package/src/modules/wms/components/backend/WarehouseEditDialog.tsx +0 -216
- package/src/modules/wms/components/backend/warehouseFormOptions.ts +0 -72
|
@@ -8,7 +8,6 @@ import { Badge } from '@open-mercato/ui/primitives/badge'
|
|
|
8
8
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
9
9
|
import { Switch } from '@open-mercato/ui/primitives/switch'
|
|
10
10
|
import { Input } from '@open-mercato/ui/primitives/input'
|
|
11
|
-
import { PasswordInput } from '@open-mercato/ui/primitives/password-input'
|
|
12
11
|
import {
|
|
13
12
|
Select,
|
|
14
13
|
SelectContent,
|
|
@@ -24,11 +23,6 @@ import { flash } from '@open-mercato/ui/backend/FlashMessages'
|
|
|
24
23
|
import { useT } from '@open-mercato/shared/lib/i18n/context'
|
|
25
24
|
import type { CredentialFieldType, IntegrationCredentialField } from '@open-mercato/shared/modules/integrations/types'
|
|
26
25
|
import { LoadingMessage, ErrorMessage, RecordNotFoundState } from '@open-mercato/ui/backend/detail'
|
|
27
|
-
import {
|
|
28
|
-
buildCredentialEditValues,
|
|
29
|
-
buildCredentialSavePayload,
|
|
30
|
-
type SecretFieldsConfigured,
|
|
31
|
-
} from '../../credential-secret-fields'
|
|
32
26
|
|
|
33
27
|
type CredentialField = IntegrationCredentialField
|
|
34
28
|
|
|
@@ -94,7 +88,6 @@ export default function BundleConfigPage({ params }: BundleConfigPageProps) {
|
|
|
94
88
|
const [error, setError] = React.useState<string | null>(null)
|
|
95
89
|
const [isNotFound, setIsNotFound] = React.useState(false)
|
|
96
90
|
const [credValues, setCredValues] = React.useState<Record<string, unknown>>({})
|
|
97
|
-
const [secretFieldsConfigured, setSecretFieldsConfigured] = React.useState<SecretFieldsConfigured>({})
|
|
98
91
|
const [credentialsUpdatedAt, setCredentialsUpdatedAt] = React.useState<string | null>(null)
|
|
99
92
|
const [isSavingCreds, setIsSavingCreds] = React.useState(false)
|
|
100
93
|
const [togglingIds, setTogglingIds] = React.useState<Set<string>>(new Set())
|
|
@@ -141,18 +134,13 @@ export default function BundleConfigPage({ params }: BundleConfigPageProps) {
|
|
|
141
134
|
}
|
|
142
135
|
setDetail(call.result)
|
|
143
136
|
|
|
144
|
-
const credCall = await apiCall<{
|
|
145
|
-
credentials: Record<string, unknown>
|
|
146
|
-
secretFieldsConfigured?: SecretFieldsConfigured
|
|
147
|
-
updatedAt?: string | null
|
|
148
|
-
}>(
|
|
137
|
+
const credCall = await apiCall<{ credentials: Record<string, unknown>; updatedAt?: string | null }>(
|
|
149
138
|
`/api/integrations/${encodeURIComponent(currentBundleId)}/credentials`,
|
|
150
139
|
undefined,
|
|
151
140
|
{ fallback: null },
|
|
152
141
|
)
|
|
153
142
|
if (credCall.ok && credCall.result) {
|
|
154
143
|
setCredentialsUpdatedAt(credCall.result.updatedAt ?? null)
|
|
155
|
-
setSecretFieldsConfigured(credCall.result.secretFieldsConfigured ?? {})
|
|
156
144
|
}
|
|
157
145
|
if (credCall.ok && credCall.result?.credentials) {
|
|
158
146
|
const next = { ...credCall.result.credentials }
|
|
@@ -163,10 +151,7 @@ export default function BundleConfigPage({ params }: BundleConfigPageProps) {
|
|
|
163
151
|
next.authMode = hasKeys ? 'access_keys' : 'ambient'
|
|
164
152
|
}
|
|
165
153
|
}
|
|
166
|
-
setCredValues(
|
|
167
|
-
next,
|
|
168
|
-
credCall.result.secretFieldsConfigured ?? {},
|
|
169
|
-
))
|
|
154
|
+
setCredValues(next)
|
|
170
155
|
}
|
|
171
156
|
setIsLoading(false)
|
|
172
157
|
}, [resolveCurrentBundleId, t])
|
|
@@ -178,13 +163,8 @@ export default function BundleConfigPage({ params }: BundleConfigPageProps) {
|
|
|
178
163
|
if (!currentBundleId) return
|
|
179
164
|
setIsSavingCreds(true)
|
|
180
165
|
try {
|
|
181
|
-
const savePayload = buildCredentialSavePayload(
|
|
182
|
-
credValues,
|
|
183
|
-
detail?.bundle?.credentials?.fields ?? [],
|
|
184
|
-
secretFieldsConfigured,
|
|
185
|
-
)
|
|
186
166
|
const call = await runMutation({
|
|
187
|
-
mutationPayload: { bundleId: currentBundleId,
|
|
167
|
+
mutationPayload: { bundleId: currentBundleId, credentials: credValues },
|
|
188
168
|
context: {
|
|
189
169
|
formId: mutationContextId,
|
|
190
170
|
operation: 'update',
|
|
@@ -199,7 +179,7 @@ export default function BundleConfigPage({ params }: BundleConfigPageProps) {
|
|
|
199
179
|
() => apiCall(`/api/integrations/${encodeURIComponent(currentBundleId)}/credentials`, {
|
|
200
180
|
method: 'PUT',
|
|
201
181
|
headers: { 'Content-Type': 'application/json' },
|
|
202
|
-
body: JSON.stringify(
|
|
182
|
+
body: JSON.stringify({ credentials: credValues }),
|
|
203
183
|
}, { fallback: null }),
|
|
204
184
|
),
|
|
205
185
|
})
|
|
@@ -214,7 +194,7 @@ export default function BundleConfigPage({ params }: BundleConfigPageProps) {
|
|
|
214
194
|
} finally {
|
|
215
195
|
setIsSavingCreds(false)
|
|
216
196
|
}
|
|
217
|
-
}, [resolveCurrentBundleId, runMutation, mutationContextId, retryLastMutation, credValues, credentialsUpdatedAt,
|
|
197
|
+
}, [resolveCurrentBundleId, runMutation, mutationContextId, retryLastMutation, credValues, credentialsUpdatedAt, load, t])
|
|
218
198
|
|
|
219
199
|
const handleToggle = React.useCallback(async (integrationId: string, enabled: boolean, updatedAt?: string | null) => {
|
|
220
200
|
setTogglingIds((prev) => new Set(prev).add(integrationId))
|
|
@@ -315,15 +295,15 @@ export default function BundleConfigPage({ params }: BundleConfigPageProps) {
|
|
|
315
295
|
<CardContent className="space-y-4">
|
|
316
296
|
{credFields.filter(isFieldVisible).map((field) => (
|
|
317
297
|
<div key={field.key} className="space-y-1.5">
|
|
318
|
-
<label
|
|
319
|
-
{field.label}{field.required && <span className="ml-0.5
|
|
298
|
+
<label className="text-sm font-medium">
|
|
299
|
+
{field.label}{field.required && <span className="text-red-500 ml-0.5">*</span>}
|
|
320
300
|
</label>
|
|
321
301
|
{field.type === 'select' && field.options ? (
|
|
322
302
|
<Select
|
|
323
303
|
value={(credValues[field.key] as string) || undefined}
|
|
324
304
|
onValueChange={(value) => setCredValues((prev) => ({ ...prev, [field.key]: value ?? '' }))}
|
|
325
305
|
>
|
|
326
|
-
<SelectTrigger
|
|
306
|
+
<SelectTrigger>
|
|
327
307
|
<SelectValue placeholder="—" />
|
|
328
308
|
</SelectTrigger>
|
|
329
309
|
<SelectContent>
|
|
@@ -334,32 +314,17 @@ export default function BundleConfigPage({ params }: BundleConfigPageProps) {
|
|
|
334
314
|
</Select>
|
|
335
315
|
) : field.type === 'boolean' ? (
|
|
336
316
|
<Switch
|
|
337
|
-
id={`bundle-credential-${field.key}`}
|
|
338
317
|
checked={Boolean(credValues[field.key])}
|
|
339
318
|
onCheckedChange={(checked) => setCredValues((prev) => ({ ...prev, [field.key]: checked }))}
|
|
340
319
|
/>
|
|
341
|
-
) : field.type === 'secret' ? (
|
|
342
|
-
<PasswordInput
|
|
343
|
-
id={`bundle-credential-${field.key}`}
|
|
344
|
-
placeholder={field.placeholder}
|
|
345
|
-
value={(credValues[field.key] as string) ?? ''}
|
|
346
|
-
onChange={(event) => setCredValues((prev) => ({ ...prev, [field.key]: event.target.value }))}
|
|
347
|
-
autoComplete="new-password"
|
|
348
|
-
/>
|
|
349
320
|
) : (
|
|
350
321
|
<Input
|
|
351
|
-
|
|
352
|
-
type="text"
|
|
322
|
+
type={field.type === 'secret' ? 'password' : 'text'}
|
|
353
323
|
placeholder={field.placeholder}
|
|
354
324
|
value={(credValues[field.key] as string) ?? ''}
|
|
355
325
|
onChange={(e) => setCredValues((prev) => ({ ...prev, [field.key]: e.target.value }))}
|
|
356
326
|
/>
|
|
357
327
|
)}
|
|
358
|
-
{field.type === 'secret' && secretFieldsConfigured[field.key] ? (
|
|
359
|
-
<p className="text-xs text-muted-foreground">
|
|
360
|
-
{t('integrations.detail.credentials.secretConfigured')}
|
|
361
|
-
</p>
|
|
362
|
-
) : null}
|
|
363
328
|
</div>
|
|
364
329
|
))}
|
|
365
330
|
<Button type="button" onClick={() => void handleSaveCredentials()} disabled={isSavingCreds}>
|
|
@@ -1,23 +1,13 @@
|
|
|
1
1
|
import { z } from 'zod'
|
|
2
2
|
|
|
3
|
-
const credentialFieldKeySchema = z.string().min(1).max(128)
|
|
4
|
-
|
|
5
3
|
export const saveCredentialsSchema = z.object({
|
|
6
4
|
credentials: z.record(
|
|
7
|
-
|
|
5
|
+
z.string().min(1).max(128),
|
|
8
6
|
z.union([z.string().max(20_000), z.number(), z.boolean(), z.null()]),
|
|
9
7
|
),
|
|
10
|
-
unchangedSecretFields: z.array(credentialFieldKeySchema).max(200).optional(),
|
|
11
8
|
}).refine((value) => Object.keys(value.credentials).length <= 200, {
|
|
12
9
|
message: 'At most 200 credential fields are allowed',
|
|
13
|
-
})
|
|
14
|
-
(value) => !value.unchangedSecretFields
|
|
15
|
-
|| new Set(value.unchangedSecretFields).size === value.unchangedSecretFields.length,
|
|
16
|
-
{
|
|
17
|
-
message: 'Unchanged secret field names must be unique',
|
|
18
|
-
path: ['unchangedSecretFields'],
|
|
19
|
-
},
|
|
20
|
-
)
|
|
10
|
+
})
|
|
21
11
|
|
|
22
12
|
export type SaveCredentialsInput = z.infer<typeof saveCredentialsSchema>
|
|
23
13
|
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
"integrations.detail.credentials.save": "Zugangsdaten speichern",
|
|
16
16
|
"integrations.detail.credentials.saveError": "Zugangsdaten konnten nicht gespeichert werden",
|
|
17
17
|
"integrations.detail.credentials.saved": "Zugangsdaten gespeichert",
|
|
18
|
-
"integrations.detail.credentials.secretConfigured": "Konfiguriert. Geben Sie einen neuen Wert ein, um ihn zu ersetzen.",
|
|
19
18
|
"integrations.detail.credentials.validation.boolean": "Select a valid value.",
|
|
20
19
|
"integrations.detail.credentials.validation.option": "Select one of the available options.",
|
|
21
20
|
"integrations.detail.credentials.validation.required": "{field} is required.",
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
"integrations.detail.credentials.save": "Save Credentials",
|
|
16
16
|
"integrations.detail.credentials.saveError": "Failed to save credentials",
|
|
17
17
|
"integrations.detail.credentials.saved": "Credentials saved",
|
|
18
|
-
"integrations.detail.credentials.secretConfigured": "Configured. Enter a new value to replace it.",
|
|
19
18
|
"integrations.detail.credentials.validation.boolean": "Select a valid value.",
|
|
20
19
|
"integrations.detail.credentials.validation.option": "Select one of the available options.",
|
|
21
20
|
"integrations.detail.credentials.validation.required": "{field} is required.",
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
"integrations.detail.credentials.save": "Guardar credenciales",
|
|
16
16
|
"integrations.detail.credentials.saveError": "No se pudieron guardar las credenciales",
|
|
17
17
|
"integrations.detail.credentials.saved": "Credenciales guardadas",
|
|
18
|
-
"integrations.detail.credentials.secretConfigured": "Configurado. Introduce un valor nuevo para reemplazarlo.",
|
|
19
18
|
"integrations.detail.credentials.validation.boolean": "Select a valid value.",
|
|
20
19
|
"integrations.detail.credentials.validation.option": "Select one of the available options.",
|
|
21
20
|
"integrations.detail.credentials.validation.required": "{field} is required.",
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
"integrations.detail.credentials.save": "자격 증명 저장",
|
|
16
16
|
"integrations.detail.credentials.saveError": "자격 증명 저장에 실패했습니다",
|
|
17
17
|
"integrations.detail.credentials.saved": "자격 증명이 저장되었습니다",
|
|
18
|
-
"integrations.detail.credentials.secretConfigured": "구성됨. 바꾸려면 새 값을 입력하세요.",
|
|
19
18
|
"integrations.detail.credentials.validation.boolean": "유효한 값을 선택하세요.",
|
|
20
19
|
"integrations.detail.credentials.validation.option": "사용 가능한 옵션 중 하나를 선택하세요.",
|
|
21
20
|
"integrations.detail.credentials.validation.required": "{field}은(는) 필수입니다.",
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
"integrations.detail.credentials.save": "Zapisz dane",
|
|
16
16
|
"integrations.detail.credentials.saveError": "Nie udało się zapisać danych",
|
|
17
17
|
"integrations.detail.credentials.saved": "Dane zapisane",
|
|
18
|
-
"integrations.detail.credentials.secretConfigured": "Skonfigurowano. Wpisz nową wartość, aby ją zastąpić.",
|
|
19
18
|
"integrations.detail.credentials.validation.boolean": "Select a valid value.",
|
|
20
19
|
"integrations.detail.credentials.validation.option": "Select one of the available options.",
|
|
21
20
|
"integrations.detail.credentials.validation.required": "{field} is required.",
|
|
@@ -84,26 +84,22 @@ export function maskSecretCredentials(
|
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
/**
|
|
87
|
-
* Reverse of {@link maskSecretCredentials} for the save path.
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
87
|
+
* Reverse of {@link maskSecretCredentials} for the save path. When the client
|
|
88
|
+
* submits the mask sentinel for a secret field it means "leave it unchanged":
|
|
89
|
+
* restore the existing stored secret, or drop the field entirely when nothing
|
|
90
|
+
* was previously stored (so the literal sentinel is never persisted). Any other
|
|
91
|
+
* value (including an empty string, which clears the secret) is written as-is.
|
|
91
92
|
*/
|
|
92
93
|
export function mergeMaskedSecretCredentials(
|
|
93
94
|
schema: IntegrationCredentialsSchema | undefined,
|
|
94
95
|
incoming: Record<string, unknown>,
|
|
95
96
|
existing: Record<string, unknown>,
|
|
96
|
-
unchangedSecretFields: readonly string[] = [],
|
|
97
97
|
): Record<string, unknown> {
|
|
98
98
|
const merged: Record<string, unknown> = { ...incoming }
|
|
99
|
-
const unchangedSecretFieldSet = new Set(unchangedSecretFields)
|
|
100
99
|
|
|
101
100
|
for (const field of schema?.fields ?? []) {
|
|
102
101
|
if (!isSecretField(field.type)) continue
|
|
103
|
-
|
|
104
|
-
const submittedMask = merged[field.key] === MASKED_SECRET_VALUE
|
|
105
|
-
const explicitlyUnchanged = !hasIncomingValue && unchangedSecretFieldSet.has(field.key)
|
|
106
|
-
if (!submittedMask && !explicitlyUnchanged) continue
|
|
102
|
+
if (merged[field.key] !== MASKED_SECRET_VALUE) continue
|
|
107
103
|
|
|
108
104
|
if (hasPresentValue(existing[field.key])) {
|
|
109
105
|
merged[field.key] = existing[field.key]
|
|
@@ -2,7 +2,6 @@ import type { EntityManager } from '@mikro-orm/postgresql'
|
|
|
2
2
|
import type { CommandBus } from '@open-mercato/shared/lib/commands/command-bus'
|
|
3
3
|
import type { OpenApiRouteDoc } from '@open-mercato/shared/lib/openapi/types'
|
|
4
4
|
import { isCrudHttpError } from '@open-mercato/shared/lib/crud/errors'
|
|
5
|
-
import { applyResponseEnricherToRecord } from '@open-mercato/shared/lib/crud/enricher-runner'
|
|
6
5
|
import { enforceCommandOptimisticLock } from '@open-mercato/shared/lib/crud/optimistic-lock-command'
|
|
7
6
|
import { findOneWithDecryption, findWithDecryption } from '@open-mercato/shared/lib/encryption/find'
|
|
8
7
|
import { User } from '../../../auth/data/entities'
|
|
@@ -39,36 +38,6 @@ type MessageObjectPreviewPayload = {
|
|
|
39
38
|
metadata?: Record<string, string>
|
|
40
39
|
} | null
|
|
41
40
|
|
|
42
|
-
type RbacServiceLike = {
|
|
43
|
-
getGrantedFeatures?: (
|
|
44
|
-
userId: string,
|
|
45
|
-
scope: { tenantId: string | null; organizationId: string | null },
|
|
46
|
-
) => Promise<string[]>
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Feature list for the enricher ACL gate, resolved from RBAC.
|
|
51
|
-
*
|
|
52
|
-
* Mirrors `customers/api/interactions/route.ts`. Returning `undefined` on
|
|
53
|
-
* failure is deliberate — the runner then treats every feature-gated enricher
|
|
54
|
-
* as denied, which is the safe direction.
|
|
55
|
-
*/
|
|
56
|
-
async function resolveGrantedFeatures(
|
|
57
|
-
container: { resolve: (name: string) => unknown },
|
|
58
|
-
scope: { tenantId: string; organizationId: string | null; userId: string },
|
|
59
|
-
): Promise<string[] | undefined> {
|
|
60
|
-
try {
|
|
61
|
-
const rbac = container.resolve('rbacService') as RbacServiceLike | undefined
|
|
62
|
-
if (!rbac?.getGrantedFeatures) return undefined
|
|
63
|
-
return await rbac.getGrantedFeatures(scope.userId, {
|
|
64
|
-
tenantId: scope.tenantId,
|
|
65
|
-
organizationId: scope.organizationId,
|
|
66
|
-
})
|
|
67
|
-
} catch {
|
|
68
|
-
return undefined
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
41
|
export async function GET(req: Request, { params }: { params: { id: string } }) {
|
|
73
42
|
const { ctx, scope } = await resolveMessageContext(req)
|
|
74
43
|
const em = ctx.container.resolve('em') as EntityManager
|
|
@@ -221,7 +190,7 @@ export async function GET(req: Request, { params }: { params: { id: string } })
|
|
|
221
190
|
})
|
|
222
191
|
}
|
|
223
192
|
|
|
224
|
-
|
|
193
|
+
return Response.json({
|
|
225
194
|
id: message.id,
|
|
226
195
|
updatedAt: message.updatedAt ?? null,
|
|
227
196
|
type: message.type,
|
|
@@ -288,9 +257,6 @@ export async function GET(req: Request, { params }: { params: { id: string } })
|
|
|
288
257
|
senderUserId: threadMessage.senderUserId,
|
|
289
258
|
senderName: threadSenderName,
|
|
290
259
|
senderEmail: sender?.email ?? null,
|
|
291
|
-
externalName: threadMessage.externalName ?? null,
|
|
292
|
-
externalEmail: threadMessage.externalEmail ?? null,
|
|
293
|
-
sourceEntityType: threadMessage.sourceEntityType ?? null,
|
|
294
260
|
body: threadMessage.body,
|
|
295
261
|
bodyFormat: threadMessage.bodyFormat,
|
|
296
262
|
sentAt: threadMessage.sentAt,
|
|
@@ -299,27 +265,7 @@ export async function GET(req: Request, { params }: { params: { id: string } })
|
|
|
299
265
|
isRead: recipient ? (autoMarkRead || recipient.status !== 'unread') : true,
|
|
300
266
|
conversationArchived,
|
|
301
267
|
conversationAllUnread,
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
// Mirrors `enrichSingleRecord` in `shared/lib/crud/factory.ts`, which every
|
|
305
|
-
// `makeCrudRoute` host gets for free: same `_meta` envelope, and no blanket
|
|
306
|
-
// catch so a `critical: true` enricher still surfaces as an HTTP error.
|
|
307
|
-
// Non-critical failures never escape the runner — it merges `fallback` and
|
|
308
|
-
// records the id in `_meta.enricherErrors`.
|
|
309
|
-
const enriched = await applyResponseEnricherToRecord(detail, 'messages.message', {
|
|
310
|
-
organizationId: scope.organizationId ?? '',
|
|
311
|
-
tenantId: scope.tenantId,
|
|
312
|
-
userId: scope.userId,
|
|
313
|
-
em,
|
|
314
|
-
container: ctx.container,
|
|
315
|
-
userFeatures: await resolveGrantedFeatures(ctx.container, scope),
|
|
316
268
|
})
|
|
317
|
-
|
|
318
|
-
if (enriched._meta.enrichedBy.length > 0 || enriched._meta.enricherErrors?.length) {
|
|
319
|
-
return Response.json({ ...enriched.record, _meta: enriched._meta })
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
return Response.json(enriched.record)
|
|
323
269
|
}
|
|
324
270
|
|
|
325
271
|
export async function PATCH(req: Request, { params }: { params: { id: string } }) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod'
|
|
2
2
|
import {
|
|
3
3
|
attachmentIdsPayloadSchema,
|
|
4
|
-
composeMessageRequestSchema,
|
|
5
4
|
composeMessageSchema,
|
|
6
5
|
executeActionSchema,
|
|
7
6
|
forwardMessageSchema,
|
|
@@ -51,19 +50,11 @@ export const messageListItemSchema = z.object({
|
|
|
51
50
|
threadId: z.string().uuid().nullable().optional(),
|
|
52
51
|
})
|
|
53
52
|
|
|
54
|
-
export const enrichmentMetaSchema = z.object({
|
|
55
|
-
enrichedBy: z.array(z.string()),
|
|
56
|
-
enricherErrors: z.array(z.string()).optional(),
|
|
57
|
-
})
|
|
58
|
-
|
|
59
53
|
export const messageThreadItemSchema = z.object({
|
|
60
54
|
id: z.string().uuid(),
|
|
61
55
|
senderUserId: z.string().uuid(),
|
|
62
56
|
senderName: z.string().nullable().optional(),
|
|
63
57
|
senderEmail: z.string().nullable().optional(),
|
|
64
|
-
externalName: z.string().nullable().optional(),
|
|
65
|
-
externalEmail: z.string().nullable().optional(),
|
|
66
|
-
sourceEntityType: z.string().nullable().optional(),
|
|
67
58
|
body: z.string(),
|
|
68
59
|
bodyFormat: z.enum(['text', 'markdown']).optional(),
|
|
69
60
|
sentAt: z.string().nullable().optional(),
|
|
@@ -135,17 +126,7 @@ export const messageDetailResponseSchema = z.object({
|
|
|
135
126
|
isRead: z.boolean(),
|
|
136
127
|
conversationArchived: z.boolean(),
|
|
137
128
|
conversationAllUnread: z.boolean(),
|
|
138
|
-
_channel: z.record(z.string(), z.unknown()).nullable().optional(),
|
|
139
|
-
_channelPayload: z.record(z.string(), z.unknown()).nullable().optional(),
|
|
140
|
-
_channelContact: z.record(z.string(), z.unknown()).nullable().optional(),
|
|
141
|
-
_reactions: z.array(z.record(z.string(), z.unknown())).optional(),
|
|
142
|
-
_meta: enrichmentMetaSchema.optional(),
|
|
143
129
|
})
|
|
144
|
-
// The detail route runs response enrichers for `messages.message`, so any
|
|
145
|
-
// module registering one may contribute further `_`-prefixed keys. Without
|
|
146
|
-
// this the generator emits `additionalProperties: false` and the published
|
|
147
|
-
// spec forbids the very fields the route returns.
|
|
148
|
-
.passthrough()
|
|
149
130
|
|
|
150
131
|
export const messageTokenDetailResponseSchema = z.object({
|
|
151
132
|
id: z.string().uuid(),
|
|
@@ -284,7 +265,6 @@ export {
|
|
|
284
265
|
messageObjectSchema,
|
|
285
266
|
messageRecipientSchema,
|
|
286
267
|
composeMessageSchema,
|
|
287
|
-
composeMessageRequestSchema,
|
|
288
268
|
listMessagesSchema,
|
|
289
269
|
forwardMessageSchema,
|
|
290
270
|
replyMessageSchema,
|
|
@@ -17,11 +17,6 @@ import { lookupHashCandidates } from '@open-mercato/shared/lib/encryption/aes'
|
|
|
17
17
|
import { User } from '../../auth/data/entities'
|
|
18
18
|
import { Message, MessageObject } from '../data/entities'
|
|
19
19
|
import { composeMessageSchema, listMessagesSchema, type ListMessagesInput } from '../data/validators'
|
|
20
|
-
import {
|
|
21
|
-
composeRequiresChannelTypeResolution,
|
|
22
|
-
composeSourceHintSchema,
|
|
23
|
-
resolveComposeSourceChannelType,
|
|
24
|
-
} from '../lib/composeSourceChannelType'
|
|
25
20
|
import { MESSAGE_ATTACHMENT_ENTITY_ID } from '../lib/constants'
|
|
26
21
|
import { getMessageType } from '../lib/message-types-registry'
|
|
27
22
|
import { validateMessageObjectsForType } from '../lib/object-validation'
|
|
@@ -32,7 +27,7 @@ import { resolveUserFeatures, runMessageMutationGuardAfterSuccess, runMessageMut
|
|
|
32
27
|
import { findMessageIdsBySearchTokens } from '../lib/searchLookup'
|
|
33
28
|
import { MessageCommandExecuteResult } from '../commands/shared'
|
|
34
29
|
import {
|
|
35
|
-
|
|
30
|
+
composeMessageSchema as composeSchema,
|
|
36
31
|
composeResponseSchema,
|
|
37
32
|
listMessagesSchema as listSchema,
|
|
38
33
|
messageListItemSchema,
|
|
@@ -450,31 +445,7 @@ export async function POST(req: Request) {
|
|
|
450
445
|
const { ctx, scope } = await resolveMessageContext(req)
|
|
451
446
|
const commandBus = ctx.container.resolve('commandBus') as CommandBus
|
|
452
447
|
const body = await req.json().catch(() => ({}))
|
|
453
|
-
|
|
454
|
-
// #4975: whether `externalEmail` is required depends on the channel this
|
|
455
|
-
// message originates from, so the channel type has to be established BEFORE
|
|
456
|
-
// validation. It is resolved server-side from the referenced conversation or
|
|
457
|
-
// parent message and any client-sent `sourceChannelType` is dropped —
|
|
458
|
-
// otherwise a caller could waive the requirement by asserting its own type.
|
|
459
|
-
// An unresolvable source stays `undefined`, which the validator fails closed on.
|
|
460
|
-
// Only the "public, non-draft, no address" branch of the validator reads the
|
|
461
|
-
// answer, so every other compose skips the lookup instead of discarding it.
|
|
462
|
-
const sourceHint = composeRequiresChannelTypeResolution(body)
|
|
463
|
-
? composeSourceHintSchema.safeParse(body)
|
|
464
|
-
: null
|
|
465
|
-
const sourceChannelType = sourceHint?.success
|
|
466
|
-
? await resolveComposeSourceChannelType(
|
|
467
|
-
ctx.container,
|
|
468
|
-
{ tenantId: scope.tenantId, organizationId: scope.organizationId ?? null },
|
|
469
|
-
sourceHint.data,
|
|
470
|
-
)
|
|
471
|
-
: undefined
|
|
472
|
-
const { sourceChannelType: _clientSuppliedChannelType, ...clientBody } =
|
|
473
|
-
(body ?? {}) as Record<string, unknown>
|
|
474
|
-
const input = composeMessageSchema.parse({
|
|
475
|
-
...clientBody,
|
|
476
|
-
...(sourceChannelType ? { sourceChannelType } : {}),
|
|
477
|
-
})
|
|
448
|
+
const input = composeMessageSchema.parse(body)
|
|
478
449
|
|
|
479
450
|
const isPublicVisibility = input.visibility === 'public'
|
|
480
451
|
const sendViaEmail = isPublicVisibility ? true : input.sendViaEmail
|
|
@@ -24,7 +24,6 @@ import { useMessagesInboxBulkActions, type MessageFolder } from './useMessagesIn
|
|
|
24
24
|
import {
|
|
25
25
|
buildMessagesInboxFilters,
|
|
26
26
|
buildMessagesListParams,
|
|
27
|
-
buildSenderOptionsFromMessages,
|
|
28
27
|
type SenderOption,
|
|
29
28
|
} from './inboxFilters'
|
|
30
29
|
import { createLogger } from '@open-mercato/shared/lib/logger'
|
|
@@ -39,9 +38,6 @@ type MessageListItem = {
|
|
|
39
38
|
senderUserId: string
|
|
40
39
|
senderName?: string | null
|
|
41
40
|
senderEmail?: string | null
|
|
42
|
-
externalName?: string | null
|
|
43
|
-
externalEmail?: string | null
|
|
44
|
-
sourceEntityType?: string | null
|
|
45
41
|
priority: string
|
|
46
42
|
status: string
|
|
47
43
|
hasObjects: boolean
|
|
@@ -62,7 +58,6 @@ type MessageListResponse = {
|
|
|
62
58
|
page?: number
|
|
63
59
|
pageSize?: number
|
|
64
60
|
totalPages?: number
|
|
65
|
-
totalIsCapped?: boolean
|
|
66
61
|
}
|
|
67
62
|
|
|
68
63
|
type MessageTypeItem = {
|
|
@@ -143,7 +138,6 @@ export function MessagesInboxPageClient() {
|
|
|
143
138
|
page: Number(call.result?.page ?? page),
|
|
144
139
|
pageSize: Number(call.result?.pageSize ?? pageSize),
|
|
145
140
|
totalPages: Number(call.result?.totalPages ?? 0),
|
|
146
|
-
totalIsCapped: call.result?.totalIsCapped === true,
|
|
147
141
|
}
|
|
148
142
|
},
|
|
149
143
|
})
|
|
@@ -242,7 +236,22 @@ export function MessagesInboxPageClient() {
|
|
|
242
236
|
|
|
243
237
|
React.useEffect(() => {
|
|
244
238
|
const items = listQuery.data?.items ?? []
|
|
245
|
-
|
|
239
|
+
const next = items.flatMap((item): SenderOption[] => {
|
|
240
|
+
if (typeof item.senderUserId !== 'string' || item.senderUserId.trim().length === 0) return []
|
|
241
|
+
const name = typeof item.senderName === 'string' && item.senderName.trim().length > 0
|
|
242
|
+
? item.senderName.trim()
|
|
243
|
+
: null
|
|
244
|
+
const email = typeof item.senderEmail === 'string' && item.senderEmail.trim().length > 0
|
|
245
|
+
? item.senderEmail.trim()
|
|
246
|
+
: null
|
|
247
|
+
const label = name ?? email ?? item.senderUserId
|
|
248
|
+
return [{
|
|
249
|
+
value: item.senderUserId,
|
|
250
|
+
label,
|
|
251
|
+
description: email && email !== label ? email : null,
|
|
252
|
+
}]
|
|
253
|
+
})
|
|
254
|
+
mergeSenderOptions(next)
|
|
246
255
|
}, [listQuery.data?.items, mergeSenderOptions])
|
|
247
256
|
|
|
248
257
|
React.useEffect(() => {
|
|
@@ -352,7 +361,6 @@ export function MessagesInboxPageClient() {
|
|
|
352
361
|
|
|
353
362
|
const rows = listQuery.data?.items ?? []
|
|
354
363
|
const total = listQuery.data?.total ?? 0
|
|
355
|
-
const totalIsCapped = listQuery.data?.totalIsCapped === true
|
|
356
364
|
const totalPages = listQuery.data?.totalPages ?? 0
|
|
357
365
|
|
|
358
366
|
return (
|
|
@@ -390,7 +398,6 @@ export function MessagesInboxPageClient() {
|
|
|
390
398
|
pageSize,
|
|
391
399
|
total,
|
|
392
400
|
totalPages,
|
|
393
|
-
totalIsCapped,
|
|
394
401
|
onPageChange: setPage,
|
|
395
402
|
}}
|
|
396
403
|
actions={
|
|
@@ -8,42 +8,6 @@ export type SenderOption = {
|
|
|
8
8
|
description?: string | null
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
type SenderOptionSource = {
|
|
12
|
-
senderUserId?: string | null
|
|
13
|
-
senderName?: string | null
|
|
14
|
-
senderEmail?: string | null
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Sender-filter options derived from the rows currently in the list.
|
|
19
|
-
*
|
|
20
|
-
* The filter narrows by `senderUserId`, so a row only yields an honest option
|
|
21
|
-
* when it also carries the platform identity behind that id. Ingested external
|
|
22
|
-
* mail does not: every such message in a tenant is composed under one
|
|
23
|
-
* system-user id, so labelling that id with one external sender's name would
|
|
24
|
-
* collapse every external sender into a single option that quietly returns all
|
|
25
|
-
* of their mail. Those rows are skipped, and the directory-loaded options —
|
|
26
|
-
* which are real platform users — stand alone.
|
|
27
|
-
*/
|
|
28
|
-
export function buildSenderOptionsFromMessages(items: SenderOptionSource[]): SenderOption[] {
|
|
29
|
-
return items.flatMap((item): SenderOption[] => {
|
|
30
|
-
if (typeof item.senderUserId !== 'string' || item.senderUserId.trim().length === 0) return []
|
|
31
|
-
const name = typeof item.senderName === 'string' && item.senderName.trim().length > 0
|
|
32
|
-
? item.senderName.trim()
|
|
33
|
-
: null
|
|
34
|
-
const email = typeof item.senderEmail === 'string' && item.senderEmail.trim().length > 0
|
|
35
|
-
? item.senderEmail.trim()
|
|
36
|
-
: null
|
|
37
|
-
const label = name ?? email
|
|
38
|
-
if (!label) return []
|
|
39
|
-
return [{
|
|
40
|
-
value: item.senderUserId,
|
|
41
|
-
label,
|
|
42
|
-
description: email && email !== label ? email : null,
|
|
43
|
-
}]
|
|
44
|
-
})
|
|
45
|
-
}
|
|
46
|
-
|
|
47
11
|
export type MessagesInboxFilterContext = {
|
|
48
12
|
t: Translator
|
|
49
13
|
typeOptions: { value: string; label: string }[]
|
package/src/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.ts
CHANGED
|
@@ -4,16 +4,12 @@ import * as React from 'react'
|
|
|
4
4
|
import type { TranslateFn } from '@open-mercato/shared/lib/i18n/context'
|
|
5
5
|
import type { MessageListItemProps } from '@open-mercato/shared/modules/messages/types'
|
|
6
6
|
import type { MessageDetail } from '../types'
|
|
7
|
-
import { getMessageParticipantLabel } from '../../messageListLabels'
|
|
8
7
|
|
|
9
8
|
export type ConversationItem = {
|
|
10
9
|
id: string
|
|
11
10
|
senderUserId: string
|
|
12
11
|
senderName?: string | null
|
|
13
12
|
senderEmail?: string | null
|
|
14
|
-
externalName?: string | null
|
|
15
|
-
externalEmail?: string | null
|
|
16
|
-
sourceEntityType?: string | null
|
|
17
13
|
body: string
|
|
18
14
|
bodyFormat?: 'text' | 'markdown'
|
|
19
15
|
sentAt?: string | null
|
|
@@ -37,9 +33,6 @@ export function useMessageDetailsConversation({
|
|
|
37
33
|
senderUserId: detail.senderUserId,
|
|
38
34
|
senderName: detail.senderName,
|
|
39
35
|
senderEmail: detail.senderEmail,
|
|
40
|
-
externalName: detail.externalName,
|
|
41
|
-
externalEmail: detail.externalEmail,
|
|
42
|
-
sourceEntityType: detail.sourceEntityType,
|
|
43
36
|
body: detail.body,
|
|
44
37
|
bodyFormat: detail.bodyFormat,
|
|
45
38
|
sentAt: detail.sentAt,
|
|
@@ -53,9 +46,6 @@ export function useMessageDetailsConversation({
|
|
|
53
46
|
senderUserId: item.senderUserId,
|
|
54
47
|
senderName: item.senderName,
|
|
55
48
|
senderEmail: item.senderEmail,
|
|
56
|
-
externalName: item.externalName,
|
|
57
|
-
externalEmail: item.externalEmail,
|
|
58
|
-
sourceEntityType: item.sourceEntityType,
|
|
59
49
|
body: item.body,
|
|
60
50
|
bodyFormat: item.bodyFormat,
|
|
61
51
|
sentAt: item.sentAt,
|
|
@@ -68,9 +58,6 @@ export function useMessageDetailsConversation({
|
|
|
68
58
|
senderUserId: detail.senderUserId,
|
|
69
59
|
senderName: detail.senderName,
|
|
70
60
|
senderEmail: detail.senderEmail,
|
|
71
|
-
externalName: detail.externalName,
|
|
72
|
-
externalEmail: detail.externalEmail,
|
|
73
|
-
sourceEntityType: detail.sourceEntityType,
|
|
74
61
|
body: detail.body,
|
|
75
62
|
bodyFormat: detail.bodyFormat,
|
|
76
63
|
sentAt: detail.sentAt,
|
|
@@ -127,7 +114,7 @@ export function useMessageDetailsConversation({
|
|
|
127
114
|
bodyFormat: item.bodyFormat ?? 'text',
|
|
128
115
|
priority: 'normal',
|
|
129
116
|
sentAt: item.sentAt ? new Date(item.sentAt) : null,
|
|
130
|
-
senderName:
|
|
117
|
+
senderName: item.senderName || item.senderEmail || item.senderUserId,
|
|
131
118
|
hasObjects: (item.objects ?? []).length > 0,
|
|
132
119
|
objectCount: (item.objects ?? []).length,
|
|
133
120
|
hasAttachments: false,
|
|
@@ -18,7 +18,6 @@ import {
|
|
|
18
18
|
} from 'lucide-react'
|
|
19
19
|
import type { MessageDetail } from '../types'
|
|
20
20
|
import { formatDateTime } from '../utils'
|
|
21
|
-
import { getMessageParticipantLabel } from '../../messageListLabels'
|
|
22
21
|
|
|
23
22
|
type MessageHeaderProps = {
|
|
24
23
|
detail: MessageDetail
|
|
@@ -41,7 +40,6 @@ export function MessageHeader(props: MessageHeaderProps) {
|
|
|
41
40
|
const t = useT()
|
|
42
41
|
const showSubject = props.showSubject !== false
|
|
43
42
|
const canReply = !props.detail.isDraft && props.detail.typeDefinition.allowReply
|
|
44
|
-
const senderLabel = getMessageParticipantLabel(props.detail)
|
|
45
43
|
const actionItems = React.useMemo(() => {
|
|
46
44
|
const items: ActionItem[] = []
|
|
47
45
|
|
|
@@ -123,7 +121,7 @@ export function MessageHeader(props: MessageHeaderProps) {
|
|
|
123
121
|
<FormHeader
|
|
124
122
|
mode="detail"
|
|
125
123
|
title={showSubject ? props.detail.subject : undefined}
|
|
126
|
-
subtitle={`${t('messages.detail.from', 'From')}: ${
|
|
124
|
+
subtitle={`${t('messages.detail.from', 'From')}: ${props.detail.senderName || props.detail.senderEmail || props.detail.senderUserId}`}
|
|
127
125
|
statusBadge={<p className="text-xs text-muted-foreground">{formatDateTime(props.detail.sentAt)}</p>}
|
|
128
126
|
utilityActions={canReply ? (
|
|
129
127
|
<IconButton
|