@open-mercato/core 0.6.8-develop.6998.1.d2bc46c56c → 0.6.8-develop.7001.1.03608ab252
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 +2 -2
- package/dist/generated/entities/warranty_claim/index.js +105 -0
- package/dist/generated/entities/warranty_claim/index.js.map +7 -0
- package/dist/generated/entities/warranty_claim_event/index.js +25 -0
- package/dist/generated/entities/warranty_claim_event/index.js.map +7 -0
- package/dist/generated/entities/warranty_claim_line/index.js +77 -0
- package/dist/generated/entities/warranty_claim_line/index.js.map +7 -0
- package/dist/generated/entities/warranty_claim_registration/index.js +43 -0
- package/dist/generated/entities/warranty_claim_registration/index.js.map +7 -0
- package/dist/generated/entities/warranty_claim_sequence/index.js +17 -0
- package/dist/generated/entities/warranty_claim_sequence/index.js.map +7 -0
- package/dist/generated/entities/warranty_claim_settings/index.js +43 -0
- package/dist/generated/entities/warranty_claim_settings/index.js.map +7 -0
- package/dist/generated/entities/warranty_claim_sla_signal/index.js +25 -0
- package/dist/generated/entities/warranty_claim_sla_signal/index.js.map +7 -0
- package/dist/generated/entities/warranty_troubleshooting_guide/index.js +25 -0
- package/dist/generated/entities/warranty_troubleshooting_guide/index.js.map +7 -0
- package/dist/generated/entities/warranty_vendor_policy/index.js +31 -0
- package/dist/generated/entities/warranty_vendor_policy/index.js.map +7 -0
- package/dist/generated/entities.ids.generated.js +12 -0
- package/dist/generated/entities.ids.generated.js.map +2 -2
- package/dist/generated/entity-fields-registry.js +200 -0
- package/dist/generated/entity-fields-registry.js.map +2 -2
- package/dist/helpers/integration/api.js +3 -2
- package/dist/helpers/integration/api.js.map +2 -2
- package/dist/helpers/integration/salesFixtures.js +13 -6
- package/dist/helpers/integration/salesFixtures.js.map +2 -2
- package/dist/modules/attachments/di.js +18 -0
- package/dist/modules/attachments/di.js.map +2 -2
- package/dist/modules/attachments/fields/attachment.js +186 -26
- package/dist/modules/attachments/fields/attachment.js.map +2 -2
- package/dist/modules/attachments/lib/scoped-upload-service.js +202 -0
- package/dist/modules/attachments/lib/scoped-upload-service.js.map +7 -0
- package/dist/modules/attachments/lib/target-access-service.js +39 -0
- package/dist/modules/attachments/lib/target-access-service.js.map +7 -0
- package/dist/modules/auth/api/logout.js +37 -10
- package/dist/modules/auth/api/logout.js.map +2 -2
- package/dist/modules/auth/api/reset/confirm.js +7 -0
- package/dist/modules/auth/api/reset/confirm.js.map +2 -2
- package/dist/modules/auth/api/reset.js +7 -0
- package/dist/modules/auth/api/reset.js.map +2 -2
- package/dist/modules/auth/commands/users.js +13 -0
- package/dist/modules/auth/commands/users.js.map +2 -2
- package/dist/modules/auth/events.js +15 -0
- package/dist/modules/auth/events.js.map +2 -2
- package/dist/modules/customers/api/companies/route.js +1 -0
- package/dist/modules/customers/api/companies/route.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js +2 -2
- package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/people-v2/[id]/page.js +2 -2
- package/dist/modules/customers/backend/customers/people-v2/[id]/page.js.map +2 -2
- package/dist/modules/customers/components/detail/assignableStaff.js +6 -69
- package/dist/modules/customers/components/detail/assignableStaff.js.map +2 -2
- package/dist/modules/customers/lib/assignableStaff.js +76 -0
- package/dist/modules/customers/lib/assignableStaff.js.map +7 -0
- package/dist/modules/data_sync/lib/batch-stream.js +56 -0
- package/dist/modules/data_sync/lib/batch-stream.js.map +7 -0
- package/dist/modules/data_sync/lib/sync-engine.js +165 -103
- package/dist/modules/data_sync/lib/sync-engine.js.map +2 -2
- package/dist/modules/inbox_ops/api/emails/[id]/reprocess/route.js +4 -0
- package/dist/modules/inbox_ops/api/emails/[id]/reprocess/route.js.map +2 -2
- package/dist/modules/inbox_ops/api/extract/route.js +4 -0
- package/dist/modules/inbox_ops/api/extract/route.js.map +2 -2
- package/dist/modules/inbox_ops/api/webhook/inbound.js +4 -0
- package/dist/modules/inbox_ops/api/webhook/inbound.js.map +2 -2
- package/dist/modules/sales/commands/documents.js +8 -8
- package/dist/modules/sales/commands/documents.js.map +2 -2
- package/dist/modules/warranty_claims/acl.js +75 -0
- package/dist/modules/warranty_claims/acl.js.map +7 -0
- package/dist/modules/warranty_claims/ai-agents.js +161 -0
- package/dist/modules/warranty_claims/ai-agents.js.map +7 -0
- package/dist/modules/warranty_claims/ai-tools.js +591 -0
- package/dist/modules/warranty_claims/ai-tools.js.map +7 -0
- package/dist/modules/warranty_claims/api/ai/assess/route.js +304 -0
- package/dist/modules/warranty_claims/api/ai/assess/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/ai/draft-reply/route.js +127 -0
- package/dist/modules/warranty_claims/api/ai/draft-reply/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/ai/suggest/route.js +177 -0
- package/dist/modules/warranty_claims/api/ai/suggest/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/assign/route.js +124 -0
- package/dist/modules/warranty_claims/api/assign/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/assignees/route.js +97 -0
- package/dist/modules/warranty_claims/api/assignees/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/credit-memo/route.js +152 -0
- package/dist/modules/warranty_claims/api/credit-memo/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/entitlement/route.js +145 -0
- package/dist/modules/warranty_claims/api/entitlement/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/events/route.js +199 -0
- package/dist/modules/warranty_claims/api/events/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/external/claims/route.js +446 -0
- package/dist/modules/warranty_claims/api/external/claims/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/lines/route.js +258 -0
- package/dist/modules/warranty_claims/api/lines/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/openapi.js +27 -0
- package/dist/modules/warranty_claims/api/openapi.js.map +7 -0
- package/dist/modules/warranty_claims/api/portal/attachments/route.js +490 -0
- package/dist/modules/warranty_claims/api/portal/attachments/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/portal/claims/[id]/route.js +178 -0
- package/dist/modules/warranty_claims/api/portal/claims/[id]/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/portal/claims/[id]/shared.js +101 -0
- package/dist/modules/warranty_claims/api/portal/claims/[id]/shared.js.map +7 -0
- package/dist/modules/warranty_claims/api/portal/claims/[id]/submit/route.js +78 -0
- package/dist/modules/warranty_claims/api/portal/claims/[id]/submit/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/portal/claims/[id]/withdraw/route.js +81 -0
- package/dist/modules/warranty_claims/api/portal/claims/[id]/withdraw/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/portal/claims/route.js +462 -0
- package/dist/modules/warranty_claims/api/portal/claims/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/portal/events/route.js +228 -0
- package/dist/modules/warranty_claims/api/portal/events/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/portal/options/route.js +91 -0
- package/dist/modules/warranty_claims/api/portal/options/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/portal/orders/lines/route.js +172 -0
- package/dist/modules/warranty_claims/api/portal/orders/lines/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/portal/orders/route.js +151 -0
- package/dist/modules/warranty_claims/api/portal/orders/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/portal/troubleshooting/route.js +121 -0
- package/dist/modules/warranty_claims/api/portal/troubleshooting/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/receiving/route.js +176 -0
- package/dist/modules/warranty_claims/api/receiving/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/registrations/route.js +382 -0
- package/dist/modules/warranty_claims/api/registrations/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/replacement-order/route.js +150 -0
- package/dist/modules/warranty_claims/api/replacement-order/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/return-label/route.js +235 -0
- package/dist/modules/warranty_claims/api/return-label/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/risk/route.js +101 -0
- package/dist/modules/warranty_claims/api/risk/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/route.js +482 -0
- package/dist/modules/warranty_claims/api/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/sales-return/route.js +151 -0
- package/dist/modules/warranty_claims/api/sales-return/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/settings-general/route.js +195 -0
- package/dist/modules/warranty_claims/api/settings-general/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/stats/route.js +199 -0
- package/dist/modules/warranty_claims/api/stats/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/submit/route.js +120 -0
- package/dist/modules/warranty_claims/api/submit/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/transition/route.js +126 -0
- package/dist/modules/warranty_claims/api/transition/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/troubleshooting-guides/route.js +261 -0
- package/dist/modules/warranty_claims/api/troubleshooting-guides/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/vendor-policies/route.js +311 -0
- package/dist/modules/warranty_claims/api/vendor-policies/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/vendor-recovery/route.js +130 -0
- package/dist/modules/warranty_claims/api/vendor-recovery/route.js.map +7 -0
- package/dist/modules/warranty_claims/api/vendor-recovery-suggestions/route.js +153 -0
- package/dist/modules/warranty_claims/api/vendor-recovery-suggestions/route.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/AiAssessButtons.js +268 -0
- package/dist/modules/warranty_claims/backend/components/AiAssessButtons.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/ClaimStageProgress.js +54 -0
- package/dist/modules/warranty_claims/backend/components/ClaimStageProgress.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/ClaimStatusBadge.js +87 -0
- package/dist/modules/warranty_claims/backend/components/ClaimStatusBadge.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/ClaimsKpiStrip.js +120 -0
- package/dist/modules/warranty_claims/backend/components/ClaimsKpiStrip.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/EntitlementLookupBadge.js +135 -0
- package/dist/modules/warranty_claims/backend/components/EntitlementLookupBadge.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/ReceivingPanel.js +218 -0
- package/dist/modules/warranty_claims/backend/components/ReceivingPanel.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/ReturnLabelPanel.js +231 -0
- package/dist/modules/warranty_claims/backend/components/ReturnLabelPanel.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/TroubleshootingWalker.js +82 -0
- package/dist/modules/warranty_claims/backend/components/TroubleshootingWalker.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/VendorRecoverySuggestionsPanel.js +136 -0
- package/dist/modules/warranty_claims/backend/components/VendorRecoverySuggestionsPanel.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/WarrantyWorkspace.js +41 -0
- package/dist/modules/warranty_claims/backend/components/WarrantyWorkspace.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/claimReasonOptions.js +45 -0
- package/dist/modules/warranty_claims/backend/components/claimReasonOptions.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/claimSla.js +92 -0
- package/dist/modules/warranty_claims/backend/components/claimSla.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/orderLookup.js +81 -0
- package/dist/modules/warranty_claims/backend/components/orderLookup.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/productLookup.js +317 -0
- package/dist/modules/warranty_claims/backend/components/productLookup.js.map +7 -0
- package/dist/modules/warranty_claims/backend/components/useUserDisplayNames.js +61 -0
- package/dist/modules/warranty_claims/backend/components/useUserDisplayNames.js.map +7 -0
- package/dist/modules/warranty_claims/backend/page.js +1088 -0
- package/dist/modules/warranty_claims/backend/page.js.map +7 -0
- package/dist/modules/warranty_claims/backend/page.meta.js +16 -0
- package/dist/modules/warranty_claims/backend/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/[id]/edit/page.js +427 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/[id]/edit/page.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/[id]/edit/page.meta.js +16 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/[id]/edit/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/[id]/page.js +2101 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/[id]/page.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/[id]/page.meta.js +16 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/[id]/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/create/page.js +1249 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/create/page.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/create/page.meta.js +16 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/create/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/[id]/edit/page.js +110 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/[id]/edit/page.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/[id]/edit/page.meta.js +17 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/[id]/edit/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/create/page.js +49 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/create/page.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/create/page.meta.js +17 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/create/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/page.js +485 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/page.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/page.meta.js +19 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/registrationForm.js +253 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/registrations/registrationForm.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/settings/page.js +1565 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/settings/page.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/settings/page.meta.js +19 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/settings/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/TroubleshootingTreeBuilder.js +472 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/TroubleshootingTreeBuilder.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/[id]/edit/page.js +115 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/[id]/edit/page.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/[id]/edit/page.meta.js +19 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/[id]/edit/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/create/page.js +54 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/create/page.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/create/page.meta.js +19 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/create/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.js +414 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.meta.js +21 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/troubleshootingGuideForm.js +171 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/troubleshootingGuideForm.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/[id]/edit/page.js +111 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/[id]/edit/page.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/[id]/edit/page.meta.js +19 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/[id]/edit/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/create/page.js +48 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/create/page.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/create/page.meta.js +19 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/create/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.js +429 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.meta.js +21 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/vendorPolicyForm.js +182 -0
- package/dist/modules/warranty_claims/backend/warranty_claims/vendor-policies/vendorPolicyForm.js.map +7 -0
- package/dist/modules/warranty_claims/ce.js +48 -0
- package/dist/modules/warranty_claims/ce.js.map +7 -0
- package/dist/modules/warranty_claims/commands/claim-lines.js +911 -0
- package/dist/modules/warranty_claims/commands/claim-lines.js.map +7 -0
- package/dist/modules/warranty_claims/commands/claims.js +2577 -0
- package/dist/modules/warranty_claims/commands/claims.js.map +7 -0
- package/dist/modules/warranty_claims/commands/index.js +4 -0
- package/dist/modules/warranty_claims/commands/index.js.map +7 -0
- package/dist/modules/warranty_claims/commands/settings.js +169 -0
- package/dist/modules/warranty_claims/commands/settings.js.map +7 -0
- package/dist/modules/warranty_claims/commands/shared.js +162 -0
- package/dist/modules/warranty_claims/commands/shared.js.map +7 -0
- package/dist/modules/warranty_claims/data/constants.js +35 -0
- package/dist/modules/warranty_claims/data/constants.js.map +7 -0
- package/dist/modules/warranty_claims/data/enrichers.js +97 -0
- package/dist/modules/warranty_claims/data/enrichers.js.map +7 -0
- package/dist/modules/warranty_claims/data/entities.js +731 -0
- package/dist/modules/warranty_claims/data/entities.js.map +7 -0
- package/dist/modules/warranty_claims/data/validators.js +488 -0
- package/dist/modules/warranty_claims/data/validators.js.map +7 -0
- package/dist/modules/warranty_claims/di.js +29 -0
- package/dist/modules/warranty_claims/di.js.map +7 -0
- package/dist/modules/warranty_claims/encryption.js +28 -0
- package/dist/modules/warranty_claims/encryption.js.map +7 -0
- package/dist/modules/warranty_claims/events.js +81 -0
- package/dist/modules/warranty_claims/events.js.map +7 -0
- package/dist/modules/warranty_claims/extension-points.js +19 -0
- package/dist/modules/warranty_claims/extension-points.js.map +7 -0
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/[id]/page.js +825 -0
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/[id]/page.js.map +7 -0
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/[id]/page.meta.js +11 -0
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/[id]/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/new/page.js +1139 -0
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/new/page.js.map +7 -0
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/new/page.meta.js +11 -0
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/new/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.js +253 -0
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.js.map +7 -0
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.meta.js +18 -0
- package/dist/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.meta.js.map +7 -0
- package/dist/modules/warranty_claims/index.js +15 -0
- package/dist/modules/warranty_claims/index.js.map +7 -0
- package/dist/modules/warranty_claims/lib/aiAssist.js +496 -0
- package/dist/modules/warranty_claims/lib/aiAssist.js.map +7 -0
- package/dist/modules/warranty_claims/lib/apiIdsFilter.js +11 -0
- package/dist/modules/warranty_claims/lib/apiIdsFilter.js.map +7 -0
- package/dist/modules/warranty_claims/lib/assigneeNames.js +153 -0
- package/dist/modules/warranty_claims/lib/assigneeNames.js.map +7 -0
- package/dist/modules/warranty_claims/lib/attachmentVisibility.js +9 -0
- package/dist/modules/warranty_claims/lib/attachmentVisibility.js.map +7 -0
- package/dist/modules/warranty_claims/lib/bulkFeedback.js +8 -0
- package/dist/modules/warranty_claims/lib/bulkFeedback.js.map +7 -0
- package/dist/modules/warranty_claims/lib/businessHours.js +250 -0
- package/dist/modules/warranty_claims/lib/businessHours.js.map +7 -0
- package/dist/modules/warranty_claims/lib/businessHoursForm.js +146 -0
- package/dist/modules/warranty_claims/lib/businessHoursForm.js.map +7 -0
- package/dist/modules/warranty_claims/lib/claimTypeConfig.js +39 -0
- package/dist/modules/warranty_claims/lib/claimTypeConfig.js.map +7 -0
- package/dist/modules/warranty_claims/lib/decryptionSafety.js +17 -0
- package/dist/modules/warranty_claims/lib/decryptionSafety.js.map +7 -0
- package/dist/modules/warranty_claims/lib/deskFilters.js +88 -0
- package/dist/modules/warranty_claims/lib/deskFilters.js.map +7 -0
- package/dist/modules/warranty_claims/lib/dictionaries.js +157 -0
- package/dist/modules/warranty_claims/lib/dictionaries.js.map +7 -0
- package/dist/modules/warranty_claims/lib/dictionaryLabels.js +12 -0
- package/dist/modules/warranty_claims/lib/dictionaryLabels.js.map +7 -0
- package/dist/modules/warranty_claims/lib/emailIntake.js +87 -0
- package/dist/modules/warranty_claims/lib/emailIntake.js.map +7 -0
- package/dist/modules/warranty_claims/lib/escalation.js +58 -0
- package/dist/modules/warranty_claims/lib/escalation.js.map +7 -0
- package/dist/modules/warranty_claims/lib/externalIntake.js +233 -0
- package/dist/modules/warranty_claims/lib/externalIntake.js.map +7 -0
- package/dist/modules/warranty_claims/lib/grading.js +21 -0
- package/dist/modules/warranty_claims/lib/grading.js.map +7 -0
- package/dist/modules/warranty_claims/lib/listSegments.js +18 -0
- package/dist/modules/warranty_claims/lib/listSegments.js.map +7 -0
- package/dist/modules/warranty_claims/lib/orderOwnership.js +25 -0
- package/dist/modules/warranty_claims/lib/orderOwnership.js.map +7 -0
- package/dist/modules/warranty_claims/lib/portalAttachmentUpload.js +11 -0
- package/dist/modules/warranty_claims/lib/portalAttachmentUpload.js.map +7 -0
- package/dist/modules/warranty_claims/lib/portalAttachmentValidation.js +108 -0
- package/dist/modules/warranty_claims/lib/portalAttachmentValidation.js.map +7 -0
- package/dist/modules/warranty_claims/lib/portalClaimAccess.js +26 -0
- package/dist/modules/warranty_claims/lib/portalClaimAccess.js.map +7 -0
- package/dist/modules/warranty_claims/lib/quantity.js +19 -0
- package/dist/modules/warranty_claims/lib/quantity.js.map +7 -0
- package/dist/modules/warranty_claims/lib/risk.js +204 -0
- package/dist/modules/warranty_claims/lib/risk.js.map +7 -0
- package/dist/modules/warranty_claims/lib/settings.js +55 -0
- package/dist/modules/warranty_claims/lib/settings.js.map +7 -0
- package/dist/modules/warranty_claims/lib/stateMachine.js +88 -0
- package/dist/modules/warranty_claims/lib/stateMachine.js.map +7 -0
- package/dist/modules/warranty_claims/lib/timelineFilters.js +16 -0
- package/dist/modules/warranty_claims/lib/timelineFilters.js.map +7 -0
- package/dist/modules/warranty_claims/lib/triage.js +241 -0
- package/dist/modules/warranty_claims/lib/triage.js.map +7 -0
- package/dist/modules/warranty_claims/lib/troubleshooting.js +111 -0
- package/dist/modules/warranty_claims/lib/troubleshooting.js.map +7 -0
- package/dist/modules/warranty_claims/lib/tryResolve.js +11 -0
- package/dist/modules/warranty_claims/lib/tryResolve.js.map +7 -0
- package/dist/modules/warranty_claims/lib/vendorPolicyRecovery.js +101 -0
- package/dist/modules/warranty_claims/lib/vendorPolicyRecovery.js.map +7 -0
- package/dist/modules/warranty_claims/lib/warrantyPreview.js +18 -0
- package/dist/modules/warranty_claims/lib/warrantyPreview.js.map +7 -0
- package/dist/modules/warranty_claims/migrations/Migration20260703191537_warranty_claims.js +32 -0
- package/dist/modules/warranty_claims/migrations/Migration20260703191537_warranty_claims.js.map +7 -0
- package/dist/modules/warranty_claims/migrations/Migration20260704115605_warranty_claims.js +16 -0
- package/dist/modules/warranty_claims/migrations/Migration20260704115605_warranty_claims.js.map +7 -0
- package/dist/modules/warranty_claims/migrations/Migration20260704230000_warranty_claims.js +17 -0
- package/dist/modules/warranty_claims/migrations/Migration20260704230000_warranty_claims.js.map +7 -0
- package/dist/modules/warranty_claims/migrations/Migration20260705121601_warranty_claims.js +29 -0
- package/dist/modules/warranty_claims/migrations/Migration20260705121601_warranty_claims.js.map +7 -0
- package/dist/modules/warranty_claims/migrations/Migration20260709120000_warranty_claims.js +25 -0
- package/dist/modules/warranty_claims/migrations/Migration20260709120000_warranty_claims.js.map +7 -0
- package/dist/modules/warranty_claims/migrations/Migration20260710023607_warranty_claims.js +13 -0
- package/dist/modules/warranty_claims/migrations/Migration20260710023607_warranty_claims.js.map +7 -0
- package/dist/modules/warranty_claims/migrations/Migration20260716203936_warranty_claims.js +15 -0
- package/dist/modules/warranty_claims/migrations/Migration20260716203936_warranty_claims.js.map +7 -0
- package/dist/modules/warranty_claims/migrations/Migration20260717150000_warranty_claims.js +13 -0
- package/dist/modules/warranty_claims/migrations/Migration20260717150000_warranty_claims.js.map +7 -0
- package/dist/modules/warranty_claims/migrations/Migration20260719120000_warranty_claims.js +13 -0
- package/dist/modules/warranty_claims/migrations/Migration20260719120000_warranty_claims.js.map +7 -0
- package/dist/modules/warranty_claims/migrations/Migration20260813103053_warranty_claims.js +12 -0
- package/dist/modules/warranty_claims/migrations/Migration20260813103053_warranty_claims.js.map +7 -0
- package/dist/modules/warranty_claims/notifications.client.js +67 -0
- package/dist/modules/warranty_claims/notifications.client.js.map +7 -0
- package/dist/modules/warranty_claims/notifications.js +103 -0
- package/dist/modules/warranty_claims/notifications.js.map +7 -0
- package/dist/modules/warranty_claims/search.js +174 -0
- package/dist/modules/warranty_claims/search.js.map +7 -0
- package/dist/modules/warranty_claims/services/adjudicationEvaluator.js +202 -0
- package/dist/modules/warranty_claims/services/adjudicationEvaluator.js.map +7 -0
- package/dist/modules/warranty_claims/services/claimNumberGenerator.js +58 -0
- package/dist/modules/warranty_claims/services/claimNumberGenerator.js.map +7 -0
- package/dist/modules/warranty_claims/services/entitlementResolver.js +69 -0
- package/dist/modules/warranty_claims/services/entitlementResolver.js.map +7 -0
- package/dist/modules/warranty_claims/services/returnLabelProvider.js +14 -0
- package/dist/modules/warranty_claims/services/returnLabelProvider.js.map +7 -0
- package/dist/modules/warranty_claims/setup.js +121 -0
- package/dist/modules/warranty_claims/setup.js.map +7 -0
- package/dist/modules/warranty_claims/subscribers/auto-vendor-recovery.js +119 -0
- package/dist/modules/warranty_claims/subscribers/auto-vendor-recovery.js.map +7 -0
- package/dist/modules/warranty_claims/subscribers/claim-assigned-notification.js +47 -0
- package/dist/modules/warranty_claims/subscribers/claim-assigned-notification.js.map +7 -0
- package/dist/modules/warranty_claims/subscribers/claim-customer-reply-notification.js +60 -0
- package/dist/modules/warranty_claims/subscribers/claim-customer-reply-notification.js.map +7 -0
- package/dist/modules/warranty_claims/subscribers/claim-status-notification.js +83 -0
- package/dist/modules/warranty_claims/subscribers/claim-status-notification.js.map +7 -0
- package/dist/modules/warranty_claims/subscribers/claim-submitted-notification.js +46 -0
- package/dist/modules/warranty_claims/subscribers/claim-submitted-notification.js.map +7 -0
- package/dist/modules/warranty_claims/subscribers/email-to-claim.js +135 -0
- package/dist/modules/warranty_claims/subscribers/email-to-claim.js.map +7 -0
- package/dist/modules/warranty_claims/subscribers/return-shipment-tracking.js +164 -0
- package/dist/modules/warranty_claims/subscribers/return-shipment-tracking.js.map +7 -0
- package/dist/modules/warranty_claims/subscribers/vendor-recovery-reconciliation-undo.js +24 -0
- package/dist/modules/warranty_claims/subscribers/vendor-recovery-reconciliation-undo.js.map +7 -0
- package/dist/modules/warranty_claims/subscribers/vendor-recovery-reconciliation.js +26 -0
- package/dist/modules/warranty_claims/subscribers/vendor-recovery-reconciliation.js.map +7 -0
- package/dist/modules/warranty_claims/widgets/dashboard/claims-queue/config.js +15 -0
- package/dist/modules/warranty_claims/widgets/dashboard/claims-queue/config.js.map +7 -0
- package/dist/modules/warranty_claims/widgets/dashboard/claims-queue/widget.client.js +197 -0
- package/dist/modules/warranty_claims/widgets/dashboard/claims-queue/widget.client.js.map +7 -0
- package/dist/modules/warranty_claims/widgets/dashboard/claims-queue/widget.js +28 -0
- package/dist/modules/warranty_claims/widgets/dashboard/claims-queue/widget.js.map +7 -0
- package/dist/modules/warranty_claims/widgets/injection/claims-ai-trigger/widget.client.js +418 -0
- package/dist/modules/warranty_claims/widgets/injection/claims-ai-trigger/widget.client.js.map +7 -0
- package/dist/modules/warranty_claims/widgets/injection/claims-ai-trigger/widget.js +18 -0
- package/dist/modules/warranty_claims/widgets/injection/claims-ai-trigger/widget.js.map +7 -0
- package/dist/modules/warranty_claims/widgets/injection/customer-claims-tab/widget.js +17 -0
- package/dist/modules/warranty_claims/widgets/injection/customer-claims-tab/widget.js.map +7 -0
- package/dist/modules/warranty_claims/widgets/injection/customer-claims-tab.js +146 -0
- package/dist/modules/warranty_claims/widgets/injection/customer-claims-tab.js.map +7 -0
- package/dist/modules/warranty_claims/widgets/injection/order-claims-tab/widget.js +17 -0
- package/dist/modules/warranty_claims/widgets/injection/order-claims-tab/widget.js.map +7 -0
- package/dist/modules/warranty_claims/widgets/injection/order-claims-tab.js +147 -0
- package/dist/modules/warranty_claims/widgets/injection/order-claims-tab.js.map +7 -0
- package/dist/modules/warranty_claims/widgets/injection-table.js +38 -0
- package/dist/modules/warranty_claims/widgets/injection-table.js.map +7 -0
- package/dist/modules/warranty_claims/widgets/notifications/WarrantyClaimNotificationRenderer.js +223 -0
- package/dist/modules/warranty_claims/widgets/notifications/WarrantyClaimNotificationRenderer.js.map +7 -0
- package/dist/modules/warranty_claims/widgets/notifications/index.js +5 -0
- package/dist/modules/warranty_claims/widgets/notifications/index.js.map +7 -0
- package/dist/modules/warranty_claims/workers/sla-escalation-sweep.js +334 -0
- package/dist/modules/warranty_claims/workers/sla-escalation-sweep.js.map +7 -0
- package/generated/entities/warranty_claim/index.ts +51 -0
- package/generated/entities/warranty_claim_event/index.ts +11 -0
- package/generated/entities/warranty_claim_line/index.ts +37 -0
- package/generated/entities/warranty_claim_registration/index.ts +20 -0
- package/generated/entities/warranty_claim_sequence/index.ts +7 -0
- package/generated/entities/warranty_claim_settings/index.ts +20 -0
- package/generated/entities/warranty_claim_sla_signal/index.ts +11 -0
- package/generated/entities/warranty_troubleshooting_guide/index.ts +11 -0
- package/generated/entities/warranty_vendor_policy/index.ts +14 -0
- package/generated/entities.ids.generated.ts +12 -0
- package/generated/entity-fields-registry.ts +200 -0
- package/package.json +7 -7
- package/src/helpers/integration/api.ts +10 -3
- package/src/helpers/integration/salesFixtures.ts +17 -7
- package/src/modules/attachments/di.ts +30 -1
- package/src/modules/attachments/fields/attachment.tsx +215 -23
- package/src/modules/attachments/i18n/de.json +5 -0
- package/src/modules/attachments/i18n/en.json +5 -0
- package/src/modules/attachments/i18n/es.json +5 -0
- package/src/modules/attachments/i18n/ko.json +5 -0
- package/src/modules/attachments/i18n/pl.json +5 -0
- package/src/modules/attachments/lib/scoped-upload-service.ts +257 -0
- package/src/modules/attachments/lib/target-access-service.ts +57 -0
- package/src/modules/auth/api/logout.ts +46 -10
- package/src/modules/auth/api/reset/confirm.ts +7 -0
- package/src/modules/auth/api/reset.ts +7 -0
- package/src/modules/auth/commands/users.ts +22 -0
- package/src/modules/auth/events.ts +15 -0
- package/src/modules/customers/api/companies/route.ts +1 -0
- package/src/modules/customers/backend/customers/companies-v2/[id]/page.tsx +4 -2
- package/src/modules/customers/backend/customers/people-v2/[id]/page.tsx +4 -2
- package/src/modules/customers/components/detail/assignableStaff.ts +14 -177
- package/src/modules/customers/lib/assignableStaff.ts +177 -0
- package/src/modules/data_sync/AGENTS.md +3 -0
- package/src/modules/data_sync/lib/batch-stream.ts +117 -0
- package/src/modules/data_sync/lib/sync-engine.ts +190 -115
- package/src/modules/inbox_ops/api/emails/[id]/reprocess/route.ts +4 -0
- package/src/modules/inbox_ops/api/extract/route.ts +4 -0
- package/src/modules/inbox_ops/api/webhook/inbound.ts +4 -0
- package/src/modules/sales/commands/documents.ts +16 -8
- package/src/modules/warranty_claims/AGENTS.md +49 -0
- package/src/modules/warranty_claims/acl.ts +71 -0
- package/src/modules/warranty_claims/ai-agents.ts +189 -0
- package/src/modules/warranty_claims/ai-tools.ts +711 -0
- package/src/modules/warranty_claims/api/ai/assess/route.ts +371 -0
- package/src/modules/warranty_claims/api/ai/draft-reply/route.ts +149 -0
- package/src/modules/warranty_claims/api/ai/suggest/route.ts +190 -0
- package/src/modules/warranty_claims/api/assign/route.ts +142 -0
- package/src/modules/warranty_claims/api/assignees/route.ts +102 -0
- package/src/modules/warranty_claims/api/credit-memo/route.ts +191 -0
- package/src/modules/warranty_claims/api/entitlement/route.ts +224 -0
- package/src/modules/warranty_claims/api/events/route.ts +226 -0
- package/src/modules/warranty_claims/api/external/claims/route.ts +528 -0
- package/src/modules/warranty_claims/api/lines/route.ts +275 -0
- package/src/modules/warranty_claims/api/openapi.ts +28 -0
- package/src/modules/warranty_claims/api/portal/attachments/route.ts +547 -0
- package/src/modules/warranty_claims/api/portal/claims/[id]/route.ts +195 -0
- package/src/modules/warranty_claims/api/portal/claims/[id]/shared.ts +125 -0
- package/src/modules/warranty_claims/api/portal/claims/[id]/submit/route.ts +82 -0
- package/src/modules/warranty_claims/api/portal/claims/[id]/withdraw/route.ts +87 -0
- package/src/modules/warranty_claims/api/portal/claims/route.ts +579 -0
- package/src/modules/warranty_claims/api/portal/events/route.ts +260 -0
- package/src/modules/warranty_claims/api/portal/options/route.ts +113 -0
- package/src/modules/warranty_claims/api/portal/orders/lines/route.ts +258 -0
- package/src/modules/warranty_claims/api/portal/orders/route.ts +206 -0
- package/src/modules/warranty_claims/api/portal/troubleshooting/route.ts +151 -0
- package/src/modules/warranty_claims/api/receiving/route.ts +215 -0
- package/src/modules/warranty_claims/api/registrations/route.ts +417 -0
- package/src/modules/warranty_claims/api/replacement-order/route.ts +188 -0
- package/src/modules/warranty_claims/api/return-label/route.ts +291 -0
- package/src/modules/warranty_claims/api/risk/route.ts +112 -0
- package/src/modules/warranty_claims/api/route.ts +543 -0
- package/src/modules/warranty_claims/api/sales-return/route.ts +183 -0
- package/src/modules/warranty_claims/api/settings-general/route.ts +230 -0
- package/src/modules/warranty_claims/api/stats/route.ts +306 -0
- package/src/modules/warranty_claims/api/submit/route.ts +146 -0
- package/src/modules/warranty_claims/api/transition/route.ts +144 -0
- package/src/modules/warranty_claims/api/troubleshooting-guides/route.ts +295 -0
- package/src/modules/warranty_claims/api/vendor-policies/route.ts +351 -0
- package/src/modules/warranty_claims/api/vendor-recovery/route.ts +148 -0
- package/src/modules/warranty_claims/api/vendor-recovery-suggestions/route.ts +167 -0
- package/src/modules/warranty_claims/backend/components/AiAssessButtons.tsx +389 -0
- package/src/modules/warranty_claims/backend/components/ClaimStageProgress.tsx +65 -0
- package/src/modules/warranty_claims/backend/components/ClaimStatusBadge.tsx +137 -0
- package/src/modules/warranty_claims/backend/components/ClaimsKpiStrip.tsx +169 -0
- package/src/modules/warranty_claims/backend/components/EntitlementLookupBadge.tsx +203 -0
- package/src/modules/warranty_claims/backend/components/ReceivingPanel.tsx +300 -0
- package/src/modules/warranty_claims/backend/components/ReturnLabelPanel.tsx +292 -0
- package/src/modules/warranty_claims/backend/components/TroubleshootingWalker.tsx +125 -0
- package/src/modules/warranty_claims/backend/components/VendorRecoverySuggestionsPanel.tsx +217 -0
- package/src/modules/warranty_claims/backend/components/WarrantyWorkspace.tsx +66 -0
- package/src/modules/warranty_claims/backend/components/claimReasonOptions.ts +57 -0
- package/src/modules/warranty_claims/backend/components/claimSla.tsx +127 -0
- package/src/modules/warranty_claims/backend/components/orderLookup.ts +109 -0
- package/src/modules/warranty_claims/backend/components/productLookup.tsx +433 -0
- package/src/modules/warranty_claims/backend/components/useUserDisplayNames.ts +66 -0
- package/src/modules/warranty_claims/backend/page.meta.ts +12 -0
- package/src/modules/warranty_claims/backend/page.tsx +1302 -0
- package/src/modules/warranty_claims/backend/warranty_claims/[id]/edit/page.meta.ts +12 -0
- package/src/modules/warranty_claims/backend/warranty_claims/[id]/edit/page.tsx +531 -0
- package/src/modules/warranty_claims/backend/warranty_claims/[id]/page.meta.ts +12 -0
- package/src/modules/warranty_claims/backend/warranty_claims/[id]/page.tsx +2599 -0
- package/src/modules/warranty_claims/backend/warranty_claims/create/page.meta.ts +12 -0
- package/src/modules/warranty_claims/backend/warranty_claims/create/page.tsx +1533 -0
- package/src/modules/warranty_claims/backend/warranty_claims/registrations/[id]/edit/page.meta.ts +13 -0
- package/src/modules/warranty_claims/backend/warranty_claims/registrations/[id]/edit/page.tsx +136 -0
- package/src/modules/warranty_claims/backend/warranty_claims/registrations/create/page.meta.ts +13 -0
- package/src/modules/warranty_claims/backend/warranty_claims/registrations/create/page.tsx +52 -0
- package/src/modules/warranty_claims/backend/warranty_claims/registrations/page.meta.ts +15 -0
- package/src/modules/warranty_claims/backend/warranty_claims/registrations/page.tsx +555 -0
- package/src/modules/warranty_claims/backend/warranty_claims/registrations/registrationForm.tsx +295 -0
- package/src/modules/warranty_claims/backend/warranty_claims/settings/page.meta.ts +15 -0
- package/src/modules/warranty_claims/backend/warranty_claims/settings/page.tsx +1903 -0
- package/src/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/TroubleshootingTreeBuilder.tsx +550 -0
- package/src/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/[id]/edit/page.meta.ts +15 -0
- package/src/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/[id]/edit/page.tsx +141 -0
- package/src/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/create/page.meta.ts +15 -0
- package/src/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/create/page.tsx +57 -0
- package/src/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.meta.ts +17 -0
- package/src/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/page.tsx +477 -0
- package/src/modules/warranty_claims/backend/warranty_claims/troubleshooting-guides/troubleshootingGuideForm.tsx +214 -0
- package/src/modules/warranty_claims/backend/warranty_claims/vendor-policies/[id]/edit/page.meta.ts +15 -0
- package/src/modules/warranty_claims/backend/warranty_claims/vendor-policies/[id]/edit/page.tsx +137 -0
- package/src/modules/warranty_claims/backend/warranty_claims/vendor-policies/create/page.meta.ts +15 -0
- package/src/modules/warranty_claims/backend/warranty_claims/vendor-policies/create/page.tsx +51 -0
- package/src/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.meta.ts +17 -0
- package/src/modules/warranty_claims/backend/warranty_claims/vendor-policies/page.tsx +506 -0
- package/src/modules/warranty_claims/backend/warranty_claims/vendor-policies/vendorPolicyForm.tsx +220 -0
- package/src/modules/warranty_claims/ce.ts +44 -0
- package/src/modules/warranty_claims/commands/claim-lines.ts +1082 -0
- package/src/modules/warranty_claims/commands/claims.ts +3364 -0
- package/src/modules/warranty_claims/commands/index.ts +3 -0
- package/src/modules/warranty_claims/commands/settings.ts +198 -0
- package/src/modules/warranty_claims/commands/shared.ts +212 -0
- package/src/modules/warranty_claims/data/constants.ts +37 -0
- package/src/modules/warranty_claims/data/enrichers.ts +165 -0
- package/src/modules/warranty_claims/data/entities.ts +663 -0
- package/src/modules/warranty_claims/data/validators.ts +634 -0
- package/src/modules/warranty_claims/di.ts +34 -0
- package/src/modules/warranty_claims/encryption.ts +26 -0
- package/src/modules/warranty_claims/events.ts +81 -0
- package/src/modules/warranty_claims/extension-points.ts +16 -0
- package/src/modules/warranty_claims/frontend/[orgSlug]/portal/claims/[id]/page.meta.ts +9 -0
- package/src/modules/warranty_claims/frontend/[orgSlug]/portal/claims/[id]/page.tsx +1037 -0
- package/src/modules/warranty_claims/frontend/[orgSlug]/portal/claims/new/page.meta.ts +9 -0
- package/src/modules/warranty_claims/frontend/[orgSlug]/portal/claims/new/page.tsx +1409 -0
- package/src/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.meta.ts +16 -0
- package/src/modules/warranty_claims/frontend/[orgSlug]/portal/claims/page.tsx +304 -0
- package/src/modules/warranty_claims/i18n/de.json +1270 -0
- package/src/modules/warranty_claims/i18n/en.json +1270 -0
- package/src/modules/warranty_claims/i18n/es.json +1270 -0
- package/src/modules/warranty_claims/i18n/ko.json +1270 -0
- package/src/modules/warranty_claims/i18n/pl.json +1270 -0
- package/src/modules/warranty_claims/index.ts +13 -0
- package/src/modules/warranty_claims/lib/aiAssist.ts +677 -0
- package/src/modules/warranty_claims/lib/apiIdsFilter.ts +12 -0
- package/src/modules/warranty_claims/lib/assigneeNames.ts +184 -0
- package/src/modules/warranty_claims/lib/attachmentVisibility.ts +5 -0
- package/src/modules/warranty_claims/lib/bulkFeedback.ts +6 -0
- package/src/modules/warranty_claims/lib/businessHours.ts +333 -0
- package/src/modules/warranty_claims/lib/businessHoursForm.ts +206 -0
- package/src/modules/warranty_claims/lib/claimTypeConfig.ts +49 -0
- package/src/modules/warranty_claims/lib/decryptionSafety.ts +19 -0
- package/src/modules/warranty_claims/lib/deskFilters.ts +131 -0
- package/src/modules/warranty_claims/lib/dictionaries.ts +212 -0
- package/src/modules/warranty_claims/lib/dictionaryLabels.ts +16 -0
- package/src/modules/warranty_claims/lib/emailIntake.ts +123 -0
- package/src/modules/warranty_claims/lib/escalation.ts +83 -0
- package/src/modules/warranty_claims/lib/externalIntake.ts +362 -0
- package/src/modules/warranty_claims/lib/grading.ts +23 -0
- package/src/modules/warranty_claims/lib/listSegments.ts +19 -0
- package/src/modules/warranty_claims/lib/orderOwnership.ts +58 -0
- package/src/modules/warranty_claims/lib/portalAttachmentUpload.ts +11 -0
- package/src/modules/warranty_claims/lib/portalAttachmentValidation.ts +115 -0
- package/src/modules/warranty_claims/lib/portalClaimAccess.ts +37 -0
- package/src/modules/warranty_claims/lib/quantity.ts +15 -0
- package/src/modules/warranty_claims/lib/risk.ts +371 -0
- package/src/modules/warranty_claims/lib/settings.ts +76 -0
- package/src/modules/warranty_claims/lib/stateMachine.ts +130 -0
- package/src/modules/warranty_claims/lib/timelineFilters.ts +22 -0
- package/src/modules/warranty_claims/lib/triage.ts +366 -0
- package/src/modules/warranty_claims/lib/troubleshooting.ts +157 -0
- package/src/modules/warranty_claims/lib/tryResolve.ts +7 -0
- package/src/modules/warranty_claims/lib/vendorPolicyRecovery.ts +182 -0
- package/src/modules/warranty_claims/lib/warrantyPreview.ts +20 -0
- package/src/modules/warranty_claims/migrations/.snapshot-open-mercato.json +3525 -0
- package/src/modules/warranty_claims/migrations/Migration20260703191537_warranty_claims.ts +38 -0
- package/src/modules/warranty_claims/migrations/Migration20260704115605_warranty_claims.ts +17 -0
- package/src/modules/warranty_claims/migrations/Migration20260704230000_warranty_claims.ts +17 -0
- package/src/modules/warranty_claims/migrations/Migration20260705121601_warranty_claims.ts +37 -0
- package/src/modules/warranty_claims/migrations/Migration20260709120000_warranty_claims.ts +25 -0
- package/src/modules/warranty_claims/migrations/Migration20260710023607_warranty_claims.ts +13 -0
- package/src/modules/warranty_claims/migrations/Migration20260716203936_warranty_claims.ts +15 -0
- package/src/modules/warranty_claims/migrations/Migration20260717150000_warranty_claims.ts +13 -0
- package/src/modules/warranty_claims/migrations/Migration20260719120000_warranty_claims.ts +13 -0
- package/src/modules/warranty_claims/migrations/Migration20260813103053_warranty_claims.ts +11 -0
- package/src/modules/warranty_claims/notifications.client.ts +78 -0
- package/src/modules/warranty_claims/notifications.ts +101 -0
- package/src/modules/warranty_claims/search.ts +199 -0
- package/src/modules/warranty_claims/services/adjudicationEvaluator.ts +344 -0
- package/src/modules/warranty_claims/services/claimNumberGenerator.ts +69 -0
- package/src/modules/warranty_claims/services/entitlementResolver.ts +102 -0
- package/src/modules/warranty_claims/services/returnLabelProvider.ts +30 -0
- package/src/modules/warranty_claims/setup.ts +154 -0
- package/src/modules/warranty_claims/subscribers/auto-vendor-recovery.ts +140 -0
- package/src/modules/warranty_claims/subscribers/claim-assigned-notification.ts +54 -0
- package/src/modules/warranty_claims/subscribers/claim-customer-reply-notification.ts +68 -0
- package/src/modules/warranty_claims/subscribers/claim-status-notification.ts +100 -0
- package/src/modules/warranty_claims/subscribers/claim-submitted-notification.ts +53 -0
- package/src/modules/warranty_claims/subscribers/email-to-claim.ts +175 -0
- package/src/modules/warranty_claims/subscribers/return-shipment-tracking.ts +226 -0
- package/src/modules/warranty_claims/subscribers/vendor-recovery-reconciliation-undo.ts +28 -0
- package/src/modules/warranty_claims/subscribers/vendor-recovery-reconciliation.ts +31 -0
- package/src/modules/warranty_claims/widgets/dashboard/claims-queue/config.ts +15 -0
- package/src/modules/warranty_claims/widgets/dashboard/claims-queue/widget.client.tsx +237 -0
- package/src/modules/warranty_claims/widgets/dashboard/claims-queue/widget.ts +27 -0
- package/src/modules/warranty_claims/widgets/injection/claims-ai-trigger/widget.client.tsx +527 -0
- package/src/modules/warranty_claims/widgets/injection/claims-ai-trigger/widget.ts +37 -0
- package/src/modules/warranty_claims/widgets/injection/customer-claims-tab/widget.ts +21 -0
- package/src/modules/warranty_claims/widgets/injection/customer-claims-tab.tsx +210 -0
- package/src/modules/warranty_claims/widgets/injection/order-claims-tab/widget.ts +21 -0
- package/src/modules/warranty_claims/widgets/injection/order-claims-tab.tsx +210 -0
- package/src/modules/warranty_claims/widgets/injection-table.ts +36 -0
- package/src/modules/warranty_claims/widgets/notifications/WarrantyClaimNotificationRenderer.tsx +253 -0
- package/src/modules/warranty_claims/widgets/notifications/index.ts +1 -0
- package/src/modules/warranty_claims/workers/sla-escalation-sweep.ts +450 -0
|
@@ -0,0 +1,527 @@
|
|
|
1
|
+
"use client"
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Claims list AiChat injection widget (client).
|
|
5
|
+
*
|
|
6
|
+
* Mirrors the customers `ai-assistant-trigger` widget: a compact trigger in
|
|
7
|
+
* the DataTable `:search-trailing` injection slot (right next to the claims
|
|
8
|
+
* list search input). Clicking the trigger opens a right-side sheet
|
|
9
|
+
* embedding `<AiChat>` for the `warranty_claims.claims_assistant` agent —
|
|
10
|
+
* the same agent used on the claim detail page. When more claims-domain
|
|
11
|
+
* agents are added, the popover picker becomes the extension point.
|
|
12
|
+
*
|
|
13
|
+
* `pageContext` shape matches spec §10.1 (view / recordType / recordId /
|
|
14
|
+
* extra). The host DataTable provides selection + total information through
|
|
15
|
+
* the `context` prop injected by `<InjectionSpot>`.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import * as React from 'react'
|
|
19
|
+
import { ChevronDown, Clock, ListChecks, MessageSquare, PanelRightOpen, Search } from 'lucide-react'
|
|
20
|
+
import { AiChat, type AiChatSuggestion, type AiChatContextItem } from '@open-mercato/ui/ai/AiChat'
|
|
21
|
+
import { AiIcon } from '@open-mercato/ui/ai/AiIcon'
|
|
22
|
+
import { useAiDock } from '@open-mercato/ui/ai/AiDock'
|
|
23
|
+
import { useAiChatSessions } from '@open-mercato/ui/ai/AiChatSessions'
|
|
24
|
+
import { ChatPaneTabs } from '@open-mercato/ui/ai/ChatPaneTabs'
|
|
25
|
+
import { Button } from '@open-mercato/ui/primitives/button'
|
|
26
|
+
import { ButtonGroup } from '@open-mercato/ui/primitives/button-group'
|
|
27
|
+
import { IconButton } from '@open-mercato/ui/primitives/icon-button'
|
|
28
|
+
import {
|
|
29
|
+
Dialog,
|
|
30
|
+
DialogContent,
|
|
31
|
+
DialogDescription,
|
|
32
|
+
DialogHeader,
|
|
33
|
+
DialogTitle,
|
|
34
|
+
} from '@open-mercato/ui/primitives/dialog'
|
|
35
|
+
import { Popover, PopoverContent, PopoverTrigger } from '@open-mercato/ui/primitives/popover'
|
|
36
|
+
import { useT } from '@open-mercato/shared/lib/i18n/context'
|
|
37
|
+
import { cn } from '@open-mercato/shared/lib/utils'
|
|
38
|
+
|
|
39
|
+
export const WARRANTY_CLAIMS_AI_INJECT_AGENT_ID = 'warranty_claims.claims_assistant'
|
|
40
|
+
|
|
41
|
+
export const WARRANTY_CLAIMS_AI_INJECT_VIEW = 'warranty_claims.claims.list'
|
|
42
|
+
|
|
43
|
+
export interface WarrantyClaimsAiInjectPageContext {
|
|
44
|
+
view: typeof WARRANTY_CLAIMS_AI_INJECT_VIEW
|
|
45
|
+
recordType: null
|
|
46
|
+
recordId: string | null
|
|
47
|
+
extra: {
|
|
48
|
+
selectedCount: number
|
|
49
|
+
totalMatching: number
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function computeWarrantyClaimsAiInjectPageContext(
|
|
54
|
+
context: HostInjectionContext | undefined,
|
|
55
|
+
): WarrantyClaimsAiInjectPageContext {
|
|
56
|
+
return buildPageContext(context)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
interface HostInjectionContext {
|
|
60
|
+
tableId?: string | null
|
|
61
|
+
title?: string
|
|
62
|
+
selectedRowIds?: string[]
|
|
63
|
+
selectedCount?: number
|
|
64
|
+
total?: number
|
|
65
|
+
totalMatching?: number
|
|
66
|
+
rowCount?: number
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
interface ClaimsAiTriggerProps {
|
|
70
|
+
context?: HostInjectionContext
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function readString(value: unknown): string {
|
|
74
|
+
return typeof value === 'string' ? value : ''
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function readNumber(value: unknown): number {
|
|
78
|
+
if (typeof value === 'number' && Number.isFinite(value)) return value
|
|
79
|
+
if (typeof value === 'string') {
|
|
80
|
+
const parsed = Number.parseInt(value, 10)
|
|
81
|
+
if (Number.isFinite(parsed)) return parsed
|
|
82
|
+
}
|
|
83
|
+
return 0
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function buildPageContext(context: HostInjectionContext | undefined): WarrantyClaimsAiInjectPageContext {
|
|
87
|
+
const selectedIdsRaw = Array.isArray(context?.selectedRowIds) ? context?.selectedRowIds ?? [] : []
|
|
88
|
+
const selectedIds = selectedIdsRaw.map(readString).filter((id) => id.length > 0)
|
|
89
|
+
const selectedCount = selectedIds.length > 0
|
|
90
|
+
? selectedIds.length
|
|
91
|
+
: readNumber(context?.selectedCount)
|
|
92
|
+
const totalMatching = readNumber(context?.totalMatching ?? context?.total ?? context?.rowCount)
|
|
93
|
+
const recordId = selectedIds.length > 0 ? selectedIds.join(',') : null
|
|
94
|
+
return {
|
|
95
|
+
view: WARRANTY_CLAIMS_AI_INJECT_VIEW,
|
|
96
|
+
recordType: null,
|
|
97
|
+
recordId,
|
|
98
|
+
extra: {
|
|
99
|
+
selectedCount,
|
|
100
|
+
totalMatching,
|
|
101
|
+
},
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function useClaimsSuggestions(hasSelection: boolean, selectedCount: number): AiChatSuggestion[] {
|
|
106
|
+
const t = useT()
|
|
107
|
+
return React.useMemo(() => {
|
|
108
|
+
if (hasSelection) {
|
|
109
|
+
return [
|
|
110
|
+
{
|
|
111
|
+
label: t(
|
|
112
|
+
'warranty_claims.ai_assistant.suggestions.summarizeSelected',
|
|
113
|
+
'Summarize selected claims',
|
|
114
|
+
),
|
|
115
|
+
prompt: `Give me a summary of my ${selectedCount} selected claims — status, SLA, and next step`,
|
|
116
|
+
icon: <ListChecks className="size-4" />,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
label: t(
|
|
120
|
+
'warranty_claims.ai_assistant.suggestions.triageSelected',
|
|
121
|
+
'Suggest triage for selected',
|
|
122
|
+
),
|
|
123
|
+
prompt: `Suggest triage for my ${selectedCount} selected claims: eligibility, dispositions, and priority`,
|
|
124
|
+
icon: <MessageSquare className="size-4" />,
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
label: t(
|
|
128
|
+
'warranty_claims.ai_assistant.suggestions.nextActionsSelected',
|
|
129
|
+
'Next actions for selected',
|
|
130
|
+
),
|
|
131
|
+
prompt: `What is the next recommended action for each of my ${selectedCount} selected claims?`,
|
|
132
|
+
icon: <Clock className="size-4" />,
|
|
133
|
+
},
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
return [
|
|
137
|
+
{
|
|
138
|
+
label: t('warranty_claims.ai_assistant.suggestions.overdueClaims', 'Overdue claims'),
|
|
139
|
+
prompt: 'Which open claims are overdue or at risk of missing their SLA?',
|
|
140
|
+
icon: <Clock className="size-4" />,
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
label: t('warranty_claims.ai_assistant.suggestions.summarizeQueue', 'Summarize the queue'),
|
|
144
|
+
prompt: 'Summarize the current warranty claims queue by status and priority',
|
|
145
|
+
icon: <ListChecks className="size-4" />,
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
label: t('warranty_claims.ai_assistant.suggestions.awaitingReply', 'Claims awaiting a reply'),
|
|
149
|
+
prompt: 'Which claims are waiting on a staff reply to the customer?',
|
|
150
|
+
icon: <MessageSquare className="size-4" />,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
label: t('warranty_claims.ai_assistant.suggestions.searchClaims', 'Find a claim'),
|
|
154
|
+
prompt: 'Search for a claim by claim number, customer, or product',
|
|
155
|
+
icon: <Search className="size-4" />,
|
|
156
|
+
},
|
|
157
|
+
]
|
|
158
|
+
}, [hasSelection, selectedCount, t])
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function useClaimsContextItems(pageContext: WarrantyClaimsAiInjectPageContext): AiChatContextItem[] {
|
|
162
|
+
const t = useT()
|
|
163
|
+
return React.useMemo(() => {
|
|
164
|
+
const items: AiChatContextItem[] = []
|
|
165
|
+
const { selectedCount, totalMatching } = pageContext.extra
|
|
166
|
+
if (selectedCount > 0) {
|
|
167
|
+
items.push({
|
|
168
|
+
label: t('warranty_claims.ai_assistant.context.selectedClaims', '{count} claims selected')
|
|
169
|
+
.replace('{count}', String(selectedCount)),
|
|
170
|
+
})
|
|
171
|
+
} else if (totalMatching > 0) {
|
|
172
|
+
items.push({
|
|
173
|
+
label: t('warranty_claims.ai_assistant.context.matchingClaims', '{count} claims in view')
|
|
174
|
+
.replace('{count}', String(totalMatching)),
|
|
175
|
+
})
|
|
176
|
+
}
|
|
177
|
+
return items
|
|
178
|
+
}, [pageContext, t])
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
interface ViewCopy {
|
|
182
|
+
welcomeDescriptionAll: string
|
|
183
|
+
welcomeDescriptionSelection: string
|
|
184
|
+
descriptionWithSelection: string
|
|
185
|
+
triggerAriaLabel: string
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
function useViewCopy(selectedCount: number): ViewCopy {
|
|
189
|
+
const t = useT()
|
|
190
|
+
return React.useMemo(() => {
|
|
191
|
+
const replaceCount = (value: string) => value.replace('{count}', String(selectedCount))
|
|
192
|
+
return {
|
|
193
|
+
welcomeDescriptionAll: t(
|
|
194
|
+
'warranty_claims.ai_assistant.sheet.welcomeDescriptionAll',
|
|
195
|
+
'Ask me anything about your warranty claims queue:',
|
|
196
|
+
),
|
|
197
|
+
welcomeDescriptionSelection: replaceCount(
|
|
198
|
+
t(
|
|
199
|
+
'warranty_claims.ai_assistant.sheet.welcomeDescriptionSelection',
|
|
200
|
+
'Ready to explore your {count} selected claims:',
|
|
201
|
+
),
|
|
202
|
+
),
|
|
203
|
+
descriptionWithSelection: replaceCount(
|
|
204
|
+
t(
|
|
205
|
+
'warranty_claims.ai_assistant.sheet.descriptionWithSelection',
|
|
206
|
+
'Working with {count} selected claims. Ask about their status, SLA, and next steps.',
|
|
207
|
+
),
|
|
208
|
+
),
|
|
209
|
+
triggerAriaLabel: t(
|
|
210
|
+
'warranty_claims.ai_assistant.trigger.ariaLabel',
|
|
211
|
+
'Open AI assistant for warranty claims',
|
|
212
|
+
),
|
|
213
|
+
}
|
|
214
|
+
}, [selectedCount, t])
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
interface ClaimsAgentDescriptor {
|
|
218
|
+
id: string
|
|
219
|
+
label: string
|
|
220
|
+
description: string
|
|
221
|
+
icon: React.ReactNode
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
function useClaimsAgents(): ClaimsAgentDescriptor[] {
|
|
225
|
+
const t = useT()
|
|
226
|
+
return React.useMemo(
|
|
227
|
+
() => [
|
|
228
|
+
{
|
|
229
|
+
id: WARRANTY_CLAIMS_AI_INJECT_AGENT_ID,
|
|
230
|
+
label: t('warranty_claims.ai_assistant.agents.claims.label', 'Claims Assistant'),
|
|
231
|
+
description: t(
|
|
232
|
+
'warranty_claims.ai_assistant.agents.claims.description',
|
|
233
|
+
'Triage claims, check entitlement, and draft replies.',
|
|
234
|
+
),
|
|
235
|
+
icon: <AiIcon className="size-4" />,
|
|
236
|
+
},
|
|
237
|
+
],
|
|
238
|
+
[t],
|
|
239
|
+
)
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export default function ClaimsAiTriggerWidget({ context }: ClaimsAiTriggerProps) {
|
|
243
|
+
const t = useT()
|
|
244
|
+
const dock = useAiDock()
|
|
245
|
+
const [open, setOpen] = React.useState(false)
|
|
246
|
+
const [popoverOpen, setPopoverOpen] = React.useState(false)
|
|
247
|
+
const [activeAgent, setActiveAgent] = React.useState<string>(WARRANTY_CLAIMS_AI_INJECT_AGENT_ID)
|
|
248
|
+
const [lastAgent, setLastAgent] = React.useState<string | null>(null)
|
|
249
|
+
const pageContext = React.useMemo(() => buildPageContext(context), [context])
|
|
250
|
+
const agents = useClaimsAgents()
|
|
251
|
+
|
|
252
|
+
const selectedCount = pageContext.extra.selectedCount
|
|
253
|
+
const hasSelection = selectedCount > 0
|
|
254
|
+
const suggestions = useClaimsSuggestions(hasSelection, selectedCount)
|
|
255
|
+
const contextItems = useClaimsContextItems(pageContext)
|
|
256
|
+
const viewCopy = useViewCopy(selectedCount)
|
|
257
|
+
|
|
258
|
+
const openAgent = React.useCallback((agentId: string) => {
|
|
259
|
+
setActiveAgent(agentId)
|
|
260
|
+
setLastAgent(agentId)
|
|
261
|
+
setPopoverOpen(false)
|
|
262
|
+
if (dock.state.assistant?.agent === agentId) {
|
|
263
|
+
dock.dock(dock.state.assistant)
|
|
264
|
+
setOpen(false)
|
|
265
|
+
return
|
|
266
|
+
}
|
|
267
|
+
setOpen(true)
|
|
268
|
+
}, [dock])
|
|
269
|
+
|
|
270
|
+
const handleSelectAgent = React.useCallback((agentId: string) => {
|
|
271
|
+
openAgent(agentId)
|
|
272
|
+
}, [openAgent])
|
|
273
|
+
|
|
274
|
+
const handleMainTriggerClick = React.useCallback(() => {
|
|
275
|
+
if (agents.length === 1) {
|
|
276
|
+
openAgent(agents[0].id)
|
|
277
|
+
return
|
|
278
|
+
}
|
|
279
|
+
if (lastAgent && agents.some((agent) => agent.id === lastAgent)) {
|
|
280
|
+
openAgent(lastAgent)
|
|
281
|
+
return
|
|
282
|
+
}
|
|
283
|
+
setPopoverOpen(true)
|
|
284
|
+
}, [agents, lastAgent, openAgent])
|
|
285
|
+
|
|
286
|
+
const handleDock = React.useCallback(() => {
|
|
287
|
+
const agent = agents.find((entry) => entry.id === activeAgent) ?? agents[0]
|
|
288
|
+
if (!agent) return
|
|
289
|
+
dock.dock({
|
|
290
|
+
agent: agent.id,
|
|
291
|
+
label: agent.label,
|
|
292
|
+
description: t('warranty_claims.ai_assistant.dock.subtitle', 'Warranty claims'),
|
|
293
|
+
pageContext: pageContext as unknown as Record<string, unknown>,
|
|
294
|
+
placeholder: t(
|
|
295
|
+
'warranty_claims.ai_assistant.sheet.composerPlaceholder',
|
|
296
|
+
'Ask about claims, SLAs, entitlement...',
|
|
297
|
+
),
|
|
298
|
+
suggestions,
|
|
299
|
+
contextItems,
|
|
300
|
+
welcomeTitle: t('warranty_claims.ai_assistant.sheet.welcomeTitle', 'Claims Assistant'),
|
|
301
|
+
welcomeDescription: hasSelection
|
|
302
|
+
? viewCopy.welcomeDescriptionSelection
|
|
303
|
+
: viewCopy.welcomeDescriptionAll,
|
|
304
|
+
})
|
|
305
|
+
setOpen(false)
|
|
306
|
+
}, [
|
|
307
|
+
activeAgent,
|
|
308
|
+
agents,
|
|
309
|
+
contextItems,
|
|
310
|
+
dock,
|
|
311
|
+
hasSelection,
|
|
312
|
+
pageContext,
|
|
313
|
+
suggestions,
|
|
314
|
+
t,
|
|
315
|
+
viewCopy,
|
|
316
|
+
])
|
|
317
|
+
|
|
318
|
+
const triggerLabel = viewCopy.triggerAriaLabel
|
|
319
|
+
|
|
320
|
+
const labelText = t('warranty_claims.ai_assistant.trigger.label', 'AI')
|
|
321
|
+
const moreAgentsLabel = t(
|
|
322
|
+
'warranty_claims.ai_assistant.trigger.moreAgentsAriaLabel',
|
|
323
|
+
'Choose an AI assistant',
|
|
324
|
+
)
|
|
325
|
+
|
|
326
|
+
return (
|
|
327
|
+
<>
|
|
328
|
+
<ButtonGroup>
|
|
329
|
+
<Button
|
|
330
|
+
type="button"
|
|
331
|
+
variant="outline"
|
|
332
|
+
onClick={handleMainTriggerClick}
|
|
333
|
+
data-ai-warranty-claims-inject-trigger=""
|
|
334
|
+
aria-label={triggerLabel}
|
|
335
|
+
title={triggerLabel}
|
|
336
|
+
className={cn('relative', 'hover:bg-brand-violet/10')}
|
|
337
|
+
>
|
|
338
|
+
<AiIcon className="size-4" />
|
|
339
|
+
<span>{labelText}</span>
|
|
340
|
+
{hasSelection ? (
|
|
341
|
+
<span
|
|
342
|
+
className="absolute -top-1 -right-1 inline-flex h-4 min-w-4 items-center justify-center rounded-full bg-primary px-1 text-xs font-medium leading-none text-primary-foreground"
|
|
343
|
+
data-ai-warranty-claims-inject-selected-count={selectedCount}
|
|
344
|
+
>
|
|
345
|
+
{selectedCount}
|
|
346
|
+
</span>
|
|
347
|
+
) : null}
|
|
348
|
+
</Button>
|
|
349
|
+
{agents.length > 1 ? (
|
|
350
|
+
<Popover open={popoverOpen} onOpenChange={setPopoverOpen}>
|
|
351
|
+
<PopoverTrigger asChild>
|
|
352
|
+
<IconButton
|
|
353
|
+
type="button"
|
|
354
|
+
variant="outline"
|
|
355
|
+
aria-label={moreAgentsLabel}
|
|
356
|
+
title={moreAgentsLabel}
|
|
357
|
+
data-ai-warranty-claims-inject-picker=""
|
|
358
|
+
>
|
|
359
|
+
<ChevronDown className="size-4" aria-hidden />
|
|
360
|
+
</IconButton>
|
|
361
|
+
</PopoverTrigger>
|
|
362
|
+
<PopoverContent align="end" className="w-72 p-1">
|
|
363
|
+
<div className="px-3 pt-2 pb-1 text-xs font-medium uppercase tracking-wide text-muted-foreground">
|
|
364
|
+
{t('warranty_claims.ai_assistant.popover.heading', 'AI assistants')}
|
|
365
|
+
</div>
|
|
366
|
+
<div className="flex flex-col gap-0.5">
|
|
367
|
+
{agents.map((agent) => (
|
|
368
|
+
<Button
|
|
369
|
+
key={agent.id}
|
|
370
|
+
type="button"
|
|
371
|
+
variant="ghost"
|
|
372
|
+
onClick={() => handleSelectAgent(agent.id)}
|
|
373
|
+
data-ai-warranty-claims-inject-agent-option={agent.id}
|
|
374
|
+
className="h-auto w-full items-start justify-start gap-2 rounded-sm px-2 py-2 text-left text-sm font-normal"
|
|
375
|
+
>
|
|
376
|
+
<span className="mt-0.5 inline-flex size-6 items-center justify-center rounded-full bg-secondary text-secondary-foreground">
|
|
377
|
+
{agent.icon}
|
|
378
|
+
</span>
|
|
379
|
+
<span className="flex-1 min-w-0">
|
|
380
|
+
<span className="block font-medium leading-tight">{agent.label}</span>
|
|
381
|
+
<span className="block text-xs text-muted-foreground leading-snug">
|
|
382
|
+
{agent.description}
|
|
383
|
+
</span>
|
|
384
|
+
</span>
|
|
385
|
+
</Button>
|
|
386
|
+
))}
|
|
387
|
+
</div>
|
|
388
|
+
</PopoverContent>
|
|
389
|
+
</Popover>
|
|
390
|
+
) : null}
|
|
391
|
+
</ButtonGroup>
|
|
392
|
+
<Dialog open={open} onOpenChange={setOpen}>
|
|
393
|
+
<DialogContent
|
|
394
|
+
className={cn(
|
|
395
|
+
// Mobile: full-screen sheet (no rounded corners, fills the
|
|
396
|
+
// viewport). Desktop (≥sm): right-anchored side sheet.
|
|
397
|
+
// The Dialog primitive ships a centering transform at the sm
|
|
398
|
+
// breakpoint (`sm:top-1/2 sm:left-1/2 sm:-translate-x-1/2
|
|
399
|
+
// sm:-translate-y-1/2 sm:inset-auto`); each must be overridden
|
|
400
|
+
// at the same `sm:` breakpoint or the panel renders half off
|
|
401
|
+
// the viewport.
|
|
402
|
+
'top-0 left-0 right-0 bottom-0 translate-x-0 translate-y-0 max-w-none w-screen h-svh max-h-svh rounded-none',
|
|
403
|
+
'sm:top-0 sm:bottom-0 sm:right-0 sm:left-auto sm:translate-x-0 sm:translate-y-0',
|
|
404
|
+
'sm:max-w-xl sm:w-full sm:rounded-l-xl sm:h-screen sm:max-h-screen',
|
|
405
|
+
'flex flex-col gap-3 p-4 z-modal',
|
|
406
|
+
)}
|
|
407
|
+
data-ai-warranty-claims-inject-sheet=""
|
|
408
|
+
>
|
|
409
|
+
<DialogHeader>
|
|
410
|
+
<div className="flex items-center gap-3 pr-8">
|
|
411
|
+
{/* Dock button lives on the LEFT — the Dialog primitive
|
|
412
|
+
auto-renders an X close button absolutely positioned in
|
|
413
|
+
the top-right corner, so anything we drop in the header's
|
|
414
|
+
right side visually collides with it. Mobile hides the
|
|
415
|
+
dock entirely (the side panel is desktop-only). */}
|
|
416
|
+
<IconButton
|
|
417
|
+
type="button"
|
|
418
|
+
variant="ghost"
|
|
419
|
+
size="sm"
|
|
420
|
+
aria-label={t('warranty_claims.ai_assistant.sheet.dock', 'Dock to side')}
|
|
421
|
+
title={t('warranty_claims.ai_assistant.sheet.dock', 'Dock to side')}
|
|
422
|
+
onClick={handleDock}
|
|
423
|
+
data-ai-warranty-claims-inject-dock=""
|
|
424
|
+
className="hidden lg:inline-flex shrink-0"
|
|
425
|
+
>
|
|
426
|
+
<PanelRightOpen className="size-4" aria-hidden />
|
|
427
|
+
</IconButton>
|
|
428
|
+
<DialogTitle className="flex-1 min-w-0 truncate">
|
|
429
|
+
{t('warranty_claims.ai_assistant.sheet.title', 'Claims AI assistant')}
|
|
430
|
+
</DialogTitle>
|
|
431
|
+
{hasSelection ? (
|
|
432
|
+
<span
|
|
433
|
+
className="shrink-0 inline-flex items-center rounded-full border border-border bg-secondary px-2 py-0.5 text-xs text-secondary-foreground"
|
|
434
|
+
data-ai-warranty-claims-inject-selection-pill=""
|
|
435
|
+
data-ai-warranty-claims-inject-selected-count={selectedCount}
|
|
436
|
+
>
|
|
437
|
+
{t(
|
|
438
|
+
'warranty_claims.ai_assistant.sheet.selectionPill',
|
|
439
|
+
'Acting on {count} selected',
|
|
440
|
+
).replace('{count}', String(selectedCount))}
|
|
441
|
+
</span>
|
|
442
|
+
) : null}
|
|
443
|
+
</div>
|
|
444
|
+
<DialogDescription>
|
|
445
|
+
{hasSelection
|
|
446
|
+
? viewCopy.descriptionWithSelection
|
|
447
|
+
: t(
|
|
448
|
+
'warranty_claims.ai_assistant.sheet.description',
|
|
449
|
+
'Your claims desk copilot. Ask about claims, SLAs, entitlement, and next steps.',
|
|
450
|
+
)}
|
|
451
|
+
</DialogDescription>
|
|
452
|
+
</DialogHeader>
|
|
453
|
+
<ClaimsChatBody
|
|
454
|
+
activeAgent={activeAgent}
|
|
455
|
+
pageContext={pageContext}
|
|
456
|
+
suggestions={suggestions}
|
|
457
|
+
contextItems={contextItems}
|
|
458
|
+
hasSelection={hasSelection}
|
|
459
|
+
viewCopy={viewCopy}
|
|
460
|
+
/>
|
|
461
|
+
</DialogContent>
|
|
462
|
+
</Dialog>
|
|
463
|
+
</>
|
|
464
|
+
)
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
interface ClaimsChatBodyProps {
|
|
468
|
+
activeAgent: string
|
|
469
|
+
pageContext: WarrantyClaimsAiInjectPageContext
|
|
470
|
+
suggestions: AiChatSuggestion[]
|
|
471
|
+
contextItems: AiChatContextItem[]
|
|
472
|
+
hasSelection: boolean
|
|
473
|
+
viewCopy: ViewCopy
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
function ClaimsChatBody({
|
|
477
|
+
activeAgent,
|
|
478
|
+
pageContext,
|
|
479
|
+
suggestions,
|
|
480
|
+
contextItems,
|
|
481
|
+
hasSelection,
|
|
482
|
+
viewCopy,
|
|
483
|
+
}: ClaimsChatBodyProps) {
|
|
484
|
+
const t = useT()
|
|
485
|
+
const sessions = useAiChatSessions()
|
|
486
|
+
const session = sessions.getActiveSession(activeAgent)
|
|
487
|
+
|
|
488
|
+
// Lazily ensure an open session exists. Running `ensureSession` inside an
|
|
489
|
+
// effect (not inline during render) keeps the provider's setState calls
|
|
490
|
+
// outside of the render phase. The first frame may render without a
|
|
491
|
+
// session — that's fine, we render the tab strip alone until the next
|
|
492
|
+
// tick when the new session is committed and `getActiveSession` returns it.
|
|
493
|
+
React.useEffect(() => {
|
|
494
|
+
if (!session) sessions.ensureSession(activeAgent)
|
|
495
|
+
}, [activeAgent, session, sessions])
|
|
496
|
+
|
|
497
|
+
return (
|
|
498
|
+
<>
|
|
499
|
+
<ChatPaneTabs agentId={activeAgent} className="border-b" />
|
|
500
|
+
<div className="min-h-0 flex-1" data-ai-warranty-claims-inject-chat-container="">
|
|
501
|
+
{session ? (
|
|
502
|
+
<AiChat
|
|
503
|
+
// `key` forces a fresh mount when the active tab changes so the
|
|
504
|
+
// AI SDK's status doesn't leak across sessions.
|
|
505
|
+
key={session.id}
|
|
506
|
+
agent={activeAgent}
|
|
507
|
+
conversationId={session.conversationId}
|
|
508
|
+
pageContext={pageContext as unknown as Record<string, unknown>}
|
|
509
|
+
className="h-full"
|
|
510
|
+
placeholder={t(
|
|
511
|
+
'warranty_claims.ai_assistant.sheet.composerPlaceholder',
|
|
512
|
+
'Ask about claims, SLAs, entitlement...',
|
|
513
|
+
)}
|
|
514
|
+
suggestions={suggestions}
|
|
515
|
+
contextItems={contextItems}
|
|
516
|
+
welcomeTitle={t('warranty_claims.ai_assistant.sheet.welcomeTitle', 'Claims Assistant')}
|
|
517
|
+
welcomeDescription={
|
|
518
|
+
hasSelection
|
|
519
|
+
? viewCopy.welcomeDescriptionSelection
|
|
520
|
+
: viewCopy.welcomeDescriptionAll
|
|
521
|
+
}
|
|
522
|
+
/>
|
|
523
|
+
) : null}
|
|
524
|
+
</div>
|
|
525
|
+
</>
|
|
526
|
+
)
|
|
527
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { InjectionWidgetModule } from '@open-mercato/shared/modules/widgets/injection'
|
|
2
|
+
import ClaimsAiTriggerWidget from './widget.client'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Claims list AiChat injection widget.
|
|
6
|
+
*
|
|
7
|
+
* Mirrors the customers `ai-assistant-trigger` pattern: a compact "Ask AI"
|
|
8
|
+
* trigger rendered in the claims list DataTable `:search-trailing` slot that
|
|
9
|
+
* opens a right-side sheet embedding
|
|
10
|
+
* `<AiChat agent="warranty_claims.claims_assistant" pageContext={...} />`.
|
|
11
|
+
*
|
|
12
|
+
* `pageContext` follows the spec §10.1 shape:
|
|
13
|
+
*
|
|
14
|
+
* { view: 'warranty_claims.claims.list',
|
|
15
|
+
* recordType: null,
|
|
16
|
+
* recordId: string | null, // comma-separated UUIDs or null
|
|
17
|
+
* extra: { selectedCount, totalMatching } }
|
|
18
|
+
*
|
|
19
|
+
* Feature-gated behind `ai_assistant.view` only — the host claims list page
|
|
20
|
+
* already enforces `warranty_claims.claim.view`, so the widget gate just
|
|
21
|
+
* needs to ensure the user has AI assistant access.
|
|
22
|
+
*/
|
|
23
|
+
const widget: InjectionWidgetModule<Record<string, unknown>, Record<string, unknown>> = {
|
|
24
|
+
metadata: {
|
|
25
|
+
id: 'warranty_claims.injection.claims-ai-trigger',
|
|
26
|
+
title: 'Warranty Claims AI Assistant Trigger',
|
|
27
|
+
description:
|
|
28
|
+
'Renders an "Ask AI" button next to the claims list search input that opens a sheet embedding the claims assistant.',
|
|
29
|
+
features: ['ai_assistant.view'],
|
|
30
|
+
requiredModules: ['ai_assistant'],
|
|
31
|
+
priority: 100,
|
|
32
|
+
enabled: true,
|
|
33
|
+
},
|
|
34
|
+
Widget: ClaimsAiTriggerWidget,
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export default widget
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { InjectionWidgetModule } from '@open-mercato/shared/modules/widgets/injection'
|
|
2
|
+
import CustomerClaimsTabWidget from '../customer-claims-tab'
|
|
3
|
+
|
|
4
|
+
type CustomerClaimsContext = {
|
|
5
|
+
resourceKind: string
|
|
6
|
+
resourceId: string
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const widget: InjectionWidgetModule<CustomerClaimsContext, unknown> = {
|
|
10
|
+
metadata: {
|
|
11
|
+
id: 'warranty_claims.injection.customer-claims-tab',
|
|
12
|
+
title: 'Claims',
|
|
13
|
+
description: 'Warranty and RMA claims linked to the current customer',
|
|
14
|
+
features: ['warranty_claims.claim.view'],
|
|
15
|
+
priority: 40,
|
|
16
|
+
enabled: true,
|
|
17
|
+
},
|
|
18
|
+
Widget: CustomerClaimsTabWidget,
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default widget
|