@zeniai/client-epic-state 5.0.92 → 5.0.93-beta0ND
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/lib/common/aiCfo/aiCfoSuggestedQuestionsPageContext.d.ts +1 -1
- package/lib/commonStateTypes/animations.d.ts +1 -1
- package/lib/commonStateTypes/animations.js +1 -0
- package/lib/entity/aiCfo/aiCfoPayload.d.ts +63 -5
- package/lib/entity/aiCfo/aiCfoReducer.d.ts +23 -2
- package/lib/entity/aiCfo/aiCfoReducer.js +249 -9
- package/lib/entity/aiCfo/aiCfoSelector.d.ts +4 -1
- package/lib/entity/aiCfo/aiCfoSelector.js +19 -1
- package/lib/entity/aiCfo/aiCfoState.d.ts +97 -4
- package/lib/entity/aiCfo/aiCfoState.js +18 -1
- package/lib/entity/cardPolicy/cardPolicyPayload.d.ts +277 -0
- package/lib/entity/cardPolicy/cardPolicyPayload.js +143 -0
- package/lib/entity/cardPolicy/cardPolicyReducer.d.ts +19 -0
- package/lib/entity/cardPolicy/cardPolicyReducer.js +175 -0
- package/lib/entity/cardPolicy/cardPolicySelector.d.ts +32 -0
- package/lib/entity/cardPolicy/cardPolicySelector.js +99 -0
- package/lib/entity/cardPolicy/cardPolicyState.d.ts +205 -0
- package/lib/entity/cardPolicy/cardPolicyState.js +14 -0
- package/lib/entity/cardPolicy/extractPolicyDocumentEpic.d.ts +18 -0
- package/lib/entity/cardPolicy/extractPolicyDocumentEpic.js +68 -0
- package/lib/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.d.ts +26 -0
- package/lib/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.js +47 -0
- package/lib/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.d.ts +25 -0
- package/lib/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.js +39 -0
- package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.d.ts +24 -0
- package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.js +105 -0
- package/lib/entity/company/companyPayload.d.ts +4 -0
- package/lib/entity/company/companyPayload.js +4 -0
- package/lib/entity/company/companyStateTypes.d.ts +4 -0
- package/lib/entity/jeSchedules/jeSchedulesTypes.d.ts +1 -1
- package/lib/entity/monthEndCloseChecks/monthEndCloseChecksState.d.ts +1 -1
- package/lib/entity/paymentAccount/paymentAccountSelector.d.ts +1 -0
- package/lib/entity/paymentAccount/paymentAccountSelector.js +4 -0
- package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
- package/lib/entity/snackbar/snackbarTypes.js +3 -0
- package/lib/entity/tenant/clearAllEpic.d.ts +6 -2
- package/lib/entity/tenant/clearAllEpic.js +8 -0
- package/lib/entity/tenant/epic/deleteConnectionEpic.d.ts +1 -1
- package/lib/entity/tenant/epic/initEmailConnectOAuthEpic.d.ts +21 -0
- package/lib/entity/tenant/epic/initEmailConnectOAuthEpic.js +54 -0
- package/lib/entity/tenant/epic/saveAPIKeyConnectionEpic.d.ts +1 -1
- package/lib/entity/tenant/epic/saveConnectorCredentialsEpic.d.ts +3 -3
- package/lib/entity/tenant/epic/saveOAuthConnectionEpic.d.ts +1 -1
- package/lib/entity/tenant/tenantPayload.d.ts +1 -0
- package/lib/entity/tenant/tenantReducer.d.ts +38 -25
- package/lib/entity/tenant/tenantReducer.js +65 -5
- package/lib/entity/tenant/tenantState.d.ts +1 -0
- package/lib/epic.d.ts +19 -1
- package/lib/epic.js +20 -1
- package/lib/esm/commonStateTypes/animations.js +1 -0
- package/lib/esm/entity/aiCfo/aiCfoReducer.js +249 -9
- package/lib/esm/entity/aiCfo/aiCfoSelector.js +17 -1
- package/lib/esm/entity/aiCfo/aiCfoState.js +15 -0
- package/lib/esm/entity/cardPolicy/cardPolicyPayload.js +130 -0
- package/lib/esm/entity/cardPolicy/cardPolicyReducer.js +171 -0
- package/lib/esm/entity/cardPolicy/cardPolicySelector.js +75 -0
- package/lib/esm/entity/cardPolicy/cardPolicyState.js +9 -0
- package/lib/esm/entity/cardPolicy/extractPolicyDocumentEpic.js +64 -0
- package/lib/esm/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.js +43 -0
- package/lib/esm/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.js +35 -0
- package/lib/esm/entity/cardPolicy/policyRecommendationFromUploadEpic.js +101 -0
- package/lib/esm/entity/company/companyPayload.js +4 -0
- package/lib/esm/entity/paymentAccount/paymentAccountSelector.js +3 -0
- package/lib/esm/entity/snackbar/snackbarTypes.js +3 -0
- package/lib/esm/entity/tenant/clearAllEpic.js +8 -0
- package/lib/esm/entity/tenant/epic/initEmailConnectOAuthEpic.js +50 -0
- package/lib/esm/entity/tenant/tenantReducer.js +63 -3
- package/lib/esm/epic.js +20 -1
- package/lib/esm/index.js +46 -13
- package/lib/esm/reducer.js +12 -0
- package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +6 -3
- package/lib/esm/view/aiCfoView/epics/createSessionAndSubmitEpic.js +5 -2
- package/lib/esm/view/aiCfoView/epics/createSessionEpic.js +2 -1
- package/lib/esm/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +12 -2
- package/lib/esm/view/fileView/epic/deleteFileEpic.js +2 -2
- package/lib/esm/view/fileView/epic/deleteFileListEpic.js +2 -2
- package/lib/esm/view/fileView/epic/updateFileNameEpic.js +2 -2
- package/lib/esm/view/onboardingView/customerView/epic/aiAgentsActivation/fetchAiAgentsActivationStatusEpic.js +42 -0
- package/lib/esm/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiActivationViewedEpic.js +29 -0
- package/lib/esm/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiFinanceTeamEpic.js +40 -0
- package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewReducer.js +217 -50
- package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewSelector.js +7 -1
- package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewState.js +12 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.js +52 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.js +22 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.js +1 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.js +36 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.js +39 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.js +34 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +58 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.js +21 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.js +1 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.js +38 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +289 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +109 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +44 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +111 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +25 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +363 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +36 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +19 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +6 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +119 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +154 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +22 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.js +1 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +39 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +140 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.js +20 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +100 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +96 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +59 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +24 -0
- package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +25 -0
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +1 -0
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +34 -0
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +57 -0
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +35 -0
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.js +2 -2
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +42 -4
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +35 -0
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +62 -0
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +44 -0
- package/lib/esm/view/spendManagement/commonSetup/epic/setup/parseUploadedKybDocumentEpic.js +58 -0
- package/lib/esm/view/spendManagement/commonSetup/epic/setup/parseUploadedKycDocumentEpic.js +67 -0
- package/lib/esm/view/spendManagement/commonSetup/kycKybAutofillActions.js +14 -0
- package/lib/esm/view/spendManagement/commonSetup/kycKybParseMapper.js +205 -0
- package/lib/esm/view/spendManagement/commonSetup/setupViewReducer.js +105 -52
- package/lib/esm/view/spendManagement/commonSetup/setupViewSelector.js +6 -1
- package/lib/esm/view/spendManagement/commonSetup/types/kycKybAutofill.js +28 -0
- package/lib/index.d.ts +52 -14
- package/lib/index.js +219 -31
- package/lib/reducer.d.ts +12 -0
- package/lib/reducer.js +12 -0
- package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +11 -2
- package/lib/view/aiCfoView/aiCfoViewReducer.js +6 -3
- package/lib/view/aiCfoView/epics/createSessionAndSubmitEpic.js +5 -2
- package/lib/view/aiCfoView/epics/createSessionEpic.js +2 -1
- package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.d.ts +8 -1
- package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +12 -2
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
- package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +1 -1
- package/lib/view/fileView/epic/deleteFileEpic.js +1 -1
- package/lib/view/fileView/epic/deleteFileListEpic.js +1 -1
- package/lib/view/fileView/epic/updateFileNameEpic.js +1 -1
- package/lib/view/onboardingView/customerView/epic/aiAgentsActivation/fetchAiAgentsActivationStatusEpic.d.ts +7 -0
- package/lib/view/onboardingView/customerView/epic/aiAgentsActivation/fetchAiAgentsActivationStatusEpic.js +46 -0
- package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiActivationViewedEpic.d.ts +8 -0
- package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiActivationViewedEpic.js +33 -0
- package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiFinanceTeamEpic.d.ts +9 -0
- package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiFinanceTeamEpic.js +44 -0
- package/lib/view/onboardingView/customerView/onboardingCustomerViewPayload.d.ts +3 -0
- package/lib/view/onboardingView/customerView/onboardingCustomerViewReducer.d.ts +41 -4
- package/lib/view/onboardingView/customerView/onboardingCustomerViewReducer.js +219 -51
- package/lib/view/onboardingView/customerView/onboardingCustomerViewSelector.d.ts +5 -1
- package/lib/view/onboardingView/customerView/onboardingCustomerViewSelector.js +11 -2
- package/lib/view/onboardingView/customerView/onboardingCustomerViewState.d.ts +40 -0
- package/lib/view/onboardingView/customerView/onboardingCustomerViewState.js +13 -1
- package/lib/view/people/peopleTypes.d.ts +1 -1
- package/lib/view/scheduleView/scheduleListView/scheduleListTypes.d.ts +1 -1
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.d.ts +14 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.js +56 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.d.ts +15 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.js +28 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.js +2 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.js +40 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.js +43 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.js +38 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.d.ts +15 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +62 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.d.ts +15 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.js +27 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.d.ts +7 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.js +2 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.js +42 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +294 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +113 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.d.ts +9 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +48 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +115 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.d.ts +13 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +29 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.d.ts +14 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +369 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.d.ts +6 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +40 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.d.ts +7 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +26 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.d.ts +116 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +10 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.d.ts +33 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +126 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.d.ts +52 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +158 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.d.ts +11 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +31 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.d.ts +12 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.js +2 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +43 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.d.ts +10 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +144 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.d.ts +7 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.js +24 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.d.ts +11 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +104 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.d.ts +22 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +100 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +63 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.d.ts +3 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +28 -0
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardList.d.ts +1 -1
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.d.ts +14 -0
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +27 -1
- package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.d.ts +34 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +2 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.d.ts +7 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +38 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.d.ts +12 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +61 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.d.ts +9 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +39 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.d.ts +2 -2
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.js +1 -1
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.d.ts +12 -2
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +43 -5
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.d.ts +7 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +42 -1
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardState.d.ts +5 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.d.ts +11 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +66 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.d.ts +3 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +48 -0
- package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKybDocumentEpic.d.ts +28 -0
- package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKybDocumentEpic.js +62 -0
- package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKycDocumentEpic.d.ts +30 -0
- package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKycDocumentEpic.js +71 -0
- package/lib/view/spendManagement/commonSetup/kycKybAutofillActions.d.ts +33 -0
- package/lib/view/spendManagement/commonSetup/kycKybAutofillActions.js +17 -0
- package/lib/view/spendManagement/commonSetup/kycKybParseMapper.d.ts +24 -0
- package/lib/view/spendManagement/commonSetup/kycKybParseMapper.js +213 -0
- package/lib/view/spendManagement/commonSetup/setupViewReducer.d.ts +28 -2
- package/lib/view/spendManagement/commonSetup/setupViewReducer.js +106 -53
- package/lib/view/spendManagement/commonSetup/setupViewSelector.d.ts +7 -2
- package/lib/view/spendManagement/commonSetup/setupViewSelector.js +6 -1
- package/lib/view/spendManagement/commonSetup/setupViewState.d.ts +19 -0
- package/lib/view/spendManagement/commonSetup/types/kycKybAutofill.d.ts +142 -0
- package/lib/view/spendManagement/commonSetup/types/kycKybAutofill.js +32 -0
- package/lib/view/taskManager/taskListView/taskListReducer.d.ts +1 -1
- package/lib/view/transactionDetail/journalEntryLinesViewModel.d.ts +1 -1
- package/package.json +1 -1
|
@@ -16,4 +16,4 @@
|
|
|
16
16
|
*
|
|
17
17
|
* @see README.md in this directory for maintenance expectations.
|
|
18
18
|
*/
|
|
19
|
-
export type AiCfoSuggestedQuestionsPageContext = 'balance_sheet' | 'profit_loss' | 'vendors' | 'transactions' | 'cash_flow' | 'accounts_receivable' | 'accounts_payable' | 'transaction_details' | 'dashboard' | 'cash_balance' | 'card_balance' | 'cash_in_cash_out' | 'net_burn_or_income' | 'cash_position' | 'top_expenses' | 'revenue' | 'operating_expenses' | 'command_centre' | 'je_schedules' | 'reconciliation' | 'flux_analysis' | 'receipts' | 'mei' | 'task_checklist' | 'performance' | 'bills_list' | 'bills_details' | 'reimbursement_list' | 'reimbursement_details' | 'vendors_summary' | 'opex_by_vendor' | 'prepaid_expenses' | 'fixed_assets' | 'form_1099' | 'accrued_expenses' | 'forecast' | 'checking' | 'checking_details' | 'treasury' | 'cards' | 'cards_detail' | 'people' | 'rewards' | 'notifications';
|
|
19
|
+
export type AiCfoSuggestedQuestionsPageContext = 'balance_sheet' | 'profit_loss' | 'vendors' | 'transactions' | 'cash_flow' | 'accounts_receivable' | 'accounts_payable' | 'transaction_details' | 'dashboard' | 'cash_balance' | 'card_balance' | 'cash_in_cash_out' | 'net_burn_or_income' | 'cash_position' | 'top_expenses' | 'revenue' | 'operating_expenses' | 'command_centre' | 'je_schedules' | 'reconciliation' | 'flux_analysis' | 'receipts' | 'mei' | 'task_checklist' | 'performance' | 'bills_list' | 'bills_details' | 'reimbursement_list' | 'reimbursement_details' | 'vendors_summary' | 'opex_by_vendor' | 'prepaid_expenses' | 'fixed_assets' | 'form_1099' | 'accrued_expenses' | 'forecast' | 'checking' | 'checking_details' | 'treasury' | 'cards' | 'cards_creation' | 'cards_detail' | 'card_policy' | 'card_policy_detail' | 'people' | 'rewards' | 'notifications';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const toAnimationsFileName: (v: string) => "Success" | "AiAgent" | "AiIconEntry" | "AiIconExit" | "AiIconLoop" | "AiStar" | "AiStarIcon" | "AiStarPlain" | "AIPoweredInvoiceDark" | "AIPoweredInvoiceLight" | "Angry" | "AutoTransfer" | "CloseCard" | "Confetti" | "ConfettiSuccess" | "DashboardChristmasSnow" | "DashboardNewYearShow" | "DashboardSidebarBottomChristmas" | "DashboardSidebarBottomHalloween" | "DashboardSidebarBottomNewYear" | "DashboardSidebarBottomThanksgiving" | "DashboardSidebarTopChristmas" | "DashboardSidebarTopHalloween" | "DashboardSidebarTopNewYear" | "DashboardSidebarTopThanksgiving" | "Distribution" | "DistributionDark" | "EarnYield" | "FastestWayDark" | "FastestWayLight" | "FinanceTeamDark" | "FinanceTeamLight" | "Happy" | "Liquidity" | "LockCard" | "MoneyTransferSuccess" | "MultiLevelApprovalDark" | "MultiLevelApprovalLight" | "NotHappy" | "Protection" | "ReceiptDark" | "ReceiptLight" | "Recurring" | "RecurringDark" | "ReimburseDark" | "ReimburseLight" | "RewardsDark" | "RewardsDarkHover" | "RewardsLight" | "RewardsLightHover" | "Ripple" | "Secure" | "Target" | "TargetDark" | "UnlockCard" | "VeryHappy" | "ZeniAssist";
|
|
1
|
+
export declare const toAnimationsFileName: (v: string) => "Success" | "AiAgent" | "AiIconEntry" | "AiIconExit" | "AiIconLoop" | "AiStar" | "AiStarIcon" | "AiStarPlain" | "AIPoweredInvoiceDark" | "AIPoweredInvoiceLight" | "Angry" | "AutoTransfer" | "CloseCard" | "Confetti" | "ConfettiSuccess" | "DashboardChristmasSnow" | "DashboardNewYearShow" | "DashboardSidebarBottomChristmas" | "DashboardSidebarBottomHalloween" | "DashboardSidebarBottomNewYear" | "DashboardSidebarBottomThanksgiving" | "DashboardSidebarTopChristmas" | "DashboardSidebarTopHalloween" | "DashboardSidebarTopNewYear" | "DashboardSidebarTopThanksgiving" | "Distribution" | "DistributionDark" | "EarnYield" | "FastestWayDark" | "FastestWayLight" | "FinanceTeamDark" | "FinanceTeamLight" | "Happy" | "Liquidity" | "LockCard" | "MoneyTransferSuccess" | "MultiLevelApprovalDark" | "MultiLevelApprovalLight" | "NotHappy" | "Protection" | "ReceiptDark" | "ReceiptLight" | "Recurring" | "RecurringDark" | "ReimburseDark" | "ReimburseLight" | "RewardsDark" | "RewardsDarkHover" | "RewardsLight" | "RewardsLightHover" | "Ripple" | "Secure" | "Target" | "TargetDark" | "UnlockCard" | "VeryHappy" | "Welcome" | "ZeniAssist";
|
|
2
2
|
export type AnimationFileName = ReturnType<typeof toAnimationsFileName>;
|
|
@@ -12,16 +12,74 @@ export interface YFormatPayload {
|
|
|
12
12
|
export interface ChartVisualizationPayload {
|
|
13
13
|
values: Array<Record<string, string | number>>;
|
|
14
14
|
x: string;
|
|
15
|
-
/**
|
|
16
|
-
* y can be a string or an array of strings in the API payload.
|
|
17
|
-
* We will normalize it to string[] in state.
|
|
18
|
-
*/
|
|
19
15
|
y: string | string[];
|
|
20
16
|
lines?: string[] | null;
|
|
21
17
|
y_format?: YFormatPayload;
|
|
22
18
|
}
|
|
19
|
+
export interface SuggestedCardPayload {
|
|
20
|
+
avg_spend: number;
|
|
21
|
+
card_name: string;
|
|
22
|
+
card_name_id: string;
|
|
23
|
+
card_type: 'vendor' | 'department' | 'category';
|
|
24
|
+
credit_limit: number;
|
|
25
|
+
is_suggested: boolean;
|
|
26
|
+
owner_id: string | null;
|
|
27
|
+
}
|
|
28
|
+
export interface CardsCreationInitialDataPayload {
|
|
29
|
+
mode: 'review' | 'create';
|
|
30
|
+
suggested_cards: SuggestedCardPayload[];
|
|
31
|
+
}
|
|
32
|
+
export interface DraftPolicyEntityPayload {
|
|
33
|
+
category_codes: string[];
|
|
34
|
+
merchant_names: string[];
|
|
35
|
+
}
|
|
36
|
+
export interface DraftPolicySpendLimitsPayload {
|
|
37
|
+
transaction: number;
|
|
38
|
+
[cadence: string]: number | undefined;
|
|
39
|
+
}
|
|
40
|
+
export interface DraftPolicyPayload {
|
|
41
|
+
allowed_entity: DraftPolicyEntityPayload;
|
|
42
|
+
apply_to_cards: string[];
|
|
43
|
+
blocked_entity: DraftPolicyEntityPayload;
|
|
44
|
+
description: string;
|
|
45
|
+
mode: string;
|
|
46
|
+
name: string;
|
|
47
|
+
required_receipt_threshold: number;
|
|
48
|
+
spend_limits: DraftPolicySpendLimitsPayload;
|
|
49
|
+
}
|
|
50
|
+
export interface CardPolicyStep5ReviewPayload {
|
|
51
|
+
draft_policies: DraftPolicyPayload[];
|
|
52
|
+
prompt: string;
|
|
53
|
+
grouping_source?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface CardPolicyWizardPlanPayload {
|
|
56
|
+
step_5_review: CardPolicyStep5ReviewPayload;
|
|
57
|
+
}
|
|
58
|
+
export interface CardPolicyUploadSourcePayload {
|
|
59
|
+
confidence_score: number;
|
|
60
|
+
file_name: string;
|
|
61
|
+
low_confidence_fields: string[];
|
|
62
|
+
}
|
|
63
|
+
export type CardPolicyInitialDataPayload = {
|
|
64
|
+
mode: 'auto';
|
|
65
|
+
wizard_plan: CardPolicyWizardPlanPayload;
|
|
66
|
+
} | {
|
|
67
|
+
mode: 'guided';
|
|
68
|
+
wizard_plan: CardPolicyWizardPlanPayload;
|
|
69
|
+
} | {
|
|
70
|
+
mode: 'upload';
|
|
71
|
+
source?: CardPolicyUploadSourcePayload;
|
|
72
|
+
wizard_plan?: CardPolicyWizardPlanPayload;
|
|
73
|
+
};
|
|
74
|
+
export type InteractiveFormVisualizationPayload = {
|
|
75
|
+
form_type: 'cards_creation';
|
|
76
|
+
payload: CardsCreationInitialDataPayload;
|
|
77
|
+
} | {
|
|
78
|
+
form_type: 'card_policy';
|
|
79
|
+
payload: CardPolicyInitialDataPayload;
|
|
80
|
+
};
|
|
23
81
|
export interface AiCfoVisualizationPayload {
|
|
24
|
-
data: TableVisualizationPayload | ChartVisualizationPayload | null;
|
|
82
|
+
data: TableVisualizationPayload | ChartVisualizationPayload | InteractiveFormVisualizationPayload | null;
|
|
25
83
|
type: string | null;
|
|
26
84
|
}
|
|
27
85
|
export interface AiCfoAnswerPayload {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { ID } from '../../commonStateTypes/common';
|
|
2
2
|
import { ZeniDate } from '../../zeniDayJS';
|
|
3
3
|
import { AiCfoAnswerPayload, AiCfoVisualizationPayload, ChatSessionPayload, MessagePayload } from './aiCfoPayload';
|
|
4
|
-
import { AiCfoState, AiCfoVisualization, FileAttachmentMetadata } from './aiCfoState';
|
|
4
|
+
import { AiCfoState, AiCfoVisualization, FileAttachmentMetadata, SyntheticAiCfoAnswerKind } from './aiCfoState';
|
|
5
|
+
import type { CardPolicyUploadSource, CardPolicyWizardPlan } from './aiCfoState';
|
|
5
6
|
export declare const initialAiCfoState: AiCfoState;
|
|
6
7
|
export declare const toAiCfoVisualization: (visualization: AiCfoVisualizationPayload) => AiCfoVisualization | undefined;
|
|
7
8
|
export declare const setNewSession: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
@@ -41,6 +42,26 @@ export declare const setNewSession: import("@reduxjs/toolkit").ActionCreatorWith
|
|
|
41
42
|
}, "aiCfo/addQuestionPayload">, clearAiCfo: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"aiCfo/clearAiCfo">, deleteQuestion: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
42
43
|
chatSessionId: ID;
|
|
43
44
|
questionAnswerId: ID;
|
|
44
|
-
}, "aiCfo/deleteQuestion"
|
|
45
|
+
}, "aiCfo/deleteQuestion">, updateAiCfoAnswerCardPolicyWizardPlan: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
46
|
+
answerId: ID;
|
|
47
|
+
chatSessionId: ID;
|
|
48
|
+
wizardPlan: CardPolicyWizardPlan;
|
|
49
|
+
source?: CardPolicyUploadSource;
|
|
50
|
+
}, "aiCfo/updateAiCfoAnswerCardPolicyWizardPlan">, appendSyntheticAiCfoAnswer: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
51
|
+
chatSessionId: ID;
|
|
52
|
+
createdAt: ZeniDate;
|
|
53
|
+
id: ID;
|
|
54
|
+
kind: SyntheticAiCfoAnswerKind;
|
|
55
|
+
sourceQuestionAnswerId: ID;
|
|
56
|
+
entityIds?: ID[];
|
|
57
|
+
}, "aiCfo/appendSyntheticAiCfoAnswer">, updateSyntheticAiCfoAnswer: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
58
|
+
chatSessionId: ID;
|
|
59
|
+
id: ID;
|
|
60
|
+
kind: SyntheticAiCfoAnswerKind;
|
|
61
|
+
entityIds?: ID[];
|
|
62
|
+
}, "aiCfo/updateSyntheticAiCfoAnswer">, removeSyntheticAiCfoAnswer: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
63
|
+
chatSessionId: ID;
|
|
64
|
+
id: ID;
|
|
65
|
+
}, "aiCfo/removeSyntheticAiCfoAnswer">, clearSyntheticAiCfoAnswers: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "aiCfo/clearSyntheticAiCfoAnswers">;
|
|
45
66
|
declare const _default: import("redux").Reducer<AiCfoState>;
|
|
46
67
|
export default _default;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.deleteQuestion = exports.clearAiCfo = exports.addQuestionPayload = exports.upsertOrAddQuestionAnswerPayload = exports.upsertAnswerPayload = exports.setChatHistory = exports.setSessions = exports.clearSession = exports.setNewSession = exports.toAiCfoVisualization = exports.initialAiCfoState = void 0;
|
|
4
|
+
exports.clearSyntheticAiCfoAnswers = exports.removeSyntheticAiCfoAnswer = exports.updateSyntheticAiCfoAnswer = exports.appendSyntheticAiCfoAnswer = exports.updateAiCfoAnswerCardPolicyWizardPlan = exports.deleteQuestion = exports.clearAiCfo = exports.addQuestionPayload = exports.upsertOrAddQuestionAnswerPayload = exports.upsertAnswerPayload = exports.setChatHistory = exports.setSessions = exports.clearSession = exports.setNewSession = exports.toAiCfoVisualization = exports.initialAiCfoState = void 0;
|
|
5
5
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
6
|
const zeniDayJS_1 = require("../../zeniDayJS");
|
|
7
7
|
const aiCfoState_1 = require("./aiCfoState");
|
|
8
8
|
exports.initialAiCfoState = {
|
|
9
9
|
aiCfoByChatSessionId: {},
|
|
10
10
|
partialQuestionAnswers: {},
|
|
11
|
+
syntheticAnswersByChatSessionId: {},
|
|
11
12
|
};
|
|
12
13
|
// Utility: Merge two arrays of Q&A pairs, combining responses for the same question
|
|
13
14
|
function mergeQuestionAnswerPairs(existing, newQAs) {
|
|
@@ -139,12 +140,174 @@ const toAiCfoVisualization = (visualization) => {
|
|
|
139
140
|
if (visualization.type == null || visualization.data == null) {
|
|
140
141
|
return undefined;
|
|
141
142
|
}
|
|
143
|
+
// Reject unknown viz types; `?? 'table'` used to throw in the chart/table decoder
|
|
144
|
+
// when interactive-form payloads (no `values`) hit it.
|
|
145
|
+
const normalizedType = (0, aiCfoState_1.toAiCfoVisualizationTypeStrict)(visualization.type);
|
|
146
|
+
if (normalizedType == null) {
|
|
147
|
+
return undefined;
|
|
148
|
+
}
|
|
142
149
|
return {
|
|
143
|
-
type:
|
|
144
|
-
data:
|
|
150
|
+
type: normalizedType,
|
|
151
|
+
data: normalizedType === 'interactive_form'
|
|
152
|
+
? toInteractiveFormVisualization(visualization.data)
|
|
153
|
+
: toAiCfoVisualizationData(visualization.data),
|
|
145
154
|
};
|
|
146
155
|
};
|
|
147
156
|
exports.toAiCfoVisualization = toAiCfoVisualization;
|
|
157
|
+
const toInteractiveFormVisualization = (data) => {
|
|
158
|
+
// When `form_type` is missing / mistyped, infer from payload shape so a malformed
|
|
159
|
+
// card-policy answer doesn't get decoded as cards_creation (wrong form + submit path).
|
|
160
|
+
const formType = (0, aiCfoState_1.toInteractiveFormTypeStrict)(data.form_type) ??
|
|
161
|
+
inferInteractiveFormTypeFromPayload(data.payload);
|
|
162
|
+
if (formType === 'card_policy') {
|
|
163
|
+
return {
|
|
164
|
+
formType: 'card_policy',
|
|
165
|
+
payload: toCardPolicyInitialData(data.payload),
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
formType: 'cards_creation',
|
|
170
|
+
payload: toCardsCreationInitialData(data.payload),
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
const inferInteractiveFormTypeFromPayload = (payload) => {
|
|
174
|
+
if (payload != null && typeof payload === 'object' && 'mode' in payload) {
|
|
175
|
+
const mode = payload.mode;
|
|
176
|
+
if (mode === 'auto' || mode === 'guided' || mode === 'upload') {
|
|
177
|
+
return 'card_policy';
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return 'cards_creation';
|
|
181
|
+
};
|
|
182
|
+
const toCardsCreationInitialData = (payload) => {
|
|
183
|
+
const suggestedCards = payload.suggested_cards ?? [];
|
|
184
|
+
const ordered = [...suggestedCards].sort((a, b) => KIND_RANK[a.card_type] - KIND_RANK[b.card_type]);
|
|
185
|
+
const withUniqueIds = withSynthesizedIds(ordered);
|
|
186
|
+
const suggestedOnly = withUniqueIds.filter(({ card }) => card.is_suggested);
|
|
187
|
+
const cardNameOptions = withUniqueIds.map(({ card, uniqueId }) => ({
|
|
188
|
+
id: uniqueId,
|
|
189
|
+
kind: toCardKind(card.card_type),
|
|
190
|
+
label: card.card_name,
|
|
191
|
+
}));
|
|
192
|
+
const suggestedOwnerUserIdByTeamId = Object.fromEntries(suggestedOnly.map(({ card, uniqueId }) => [
|
|
193
|
+
uniqueId,
|
|
194
|
+
normalizeOwnerId(card.owner_id),
|
|
195
|
+
]));
|
|
196
|
+
const common = {
|
|
197
|
+
cardNameOptions,
|
|
198
|
+
suggestedOwnerUserIdByTeamId,
|
|
199
|
+
};
|
|
200
|
+
if (payload.mode === 'create') {
|
|
201
|
+
return {
|
|
202
|
+
...common,
|
|
203
|
+
mode: 'create',
|
|
204
|
+
cardRows: suggestedOnly.map(({ card, uniqueId }) => ({
|
|
205
|
+
cardKind: toCardKind(card.card_type),
|
|
206
|
+
id: uniqueId,
|
|
207
|
+
label: card.card_name,
|
|
208
|
+
recommendedLimit: card.credit_limit > 0 ? card.credit_limit : undefined,
|
|
209
|
+
suggestedOwnerUserId: normalizeOwnerId(card.owner_id),
|
|
210
|
+
})),
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
...common,
|
|
215
|
+
mode: 'review',
|
|
216
|
+
teamRows: suggestedOnly.map(({ card, uniqueId }) => ({
|
|
217
|
+
avgMonthlySpend: CURRENCY_FORMATTER.format(card.avg_spend),
|
|
218
|
+
cardKind: toCardKind(card.card_type),
|
|
219
|
+
id: uniqueId,
|
|
220
|
+
label: card.card_name,
|
|
221
|
+
recommendedLimit: CURRENCY_FORMATTER.format(card.credit_limit),
|
|
222
|
+
recommendedLimitCadence: 'Monthly',
|
|
223
|
+
})),
|
|
224
|
+
};
|
|
225
|
+
};
|
|
226
|
+
const CURRENCY_FORMATTER = new Intl.NumberFormat('en-US', {
|
|
227
|
+
style: 'currency',
|
|
228
|
+
currency: 'USD',
|
|
229
|
+
maximumFractionDigits: 0,
|
|
230
|
+
});
|
|
231
|
+
// BE emits `null` or `""` for "no owner picked"; collapse both to `undefined`.
|
|
232
|
+
const normalizeOwnerId = (ownerId) => (ownerId != null && ownerId !== '' ? ownerId : undefined);
|
|
233
|
+
const KIND_RANK = {
|
|
234
|
+
vendor: 0,
|
|
235
|
+
category: 1,
|
|
236
|
+
department: 2,
|
|
237
|
+
};
|
|
238
|
+
const toCardKind = (cardType) => {
|
|
239
|
+
if (cardType === 'department') {
|
|
240
|
+
return 'class';
|
|
241
|
+
}
|
|
242
|
+
if (cardType === 'category') {
|
|
243
|
+
return 'category';
|
|
244
|
+
}
|
|
245
|
+
return 'vendor';
|
|
246
|
+
};
|
|
247
|
+
// Falls back to `${kind}__${card_name_id}__${index}` when `card_name_id` collides
|
|
248
|
+
// (sample payloads ship the literal `"vendor_uuid"`), to keep RHF row keys unique.
|
|
249
|
+
const withSynthesizedIds = (cards) => {
|
|
250
|
+
const seen = new Set();
|
|
251
|
+
return cards.map((card, index) => {
|
|
252
|
+
const preferred = card.card_name_id;
|
|
253
|
+
if (preferred != null && preferred !== '' && !seen.has(preferred)) {
|
|
254
|
+
seen.add(preferred);
|
|
255
|
+
return { card, uniqueId: preferred };
|
|
256
|
+
}
|
|
257
|
+
const synthesized = `${card.card_type}__${preferred ?? 'unknown'}__${index}`;
|
|
258
|
+
seen.add(synthesized);
|
|
259
|
+
return { card, uniqueId: synthesized };
|
|
260
|
+
});
|
|
261
|
+
};
|
|
262
|
+
const toCardPolicyDraftPolicy = (payload, index) => ({
|
|
263
|
+
id: `draft-${index}`,
|
|
264
|
+
name: payload.name,
|
|
265
|
+
description: payload.description ?? '',
|
|
266
|
+
mode: payload.mode,
|
|
267
|
+
allowedEntity: {
|
|
268
|
+
categoryCodes: payload.allowed_entity?.category_codes ?? [],
|
|
269
|
+
merchantNames: payload.allowed_entity?.merchant_names ?? [],
|
|
270
|
+
},
|
|
271
|
+
blockedEntity: {
|
|
272
|
+
categoryCodes: payload.blocked_entity?.category_codes ?? [],
|
|
273
|
+
merchantNames: payload.blocked_entity?.merchant_names ?? [],
|
|
274
|
+
},
|
|
275
|
+
applyToCards: payload.apply_to_cards ?? [],
|
|
276
|
+
requiredReceiptThreshold: payload.required_receipt_threshold ?? 0,
|
|
277
|
+
spendLimits: {
|
|
278
|
+
transaction: payload.spend_limits?.transaction ?? 0,
|
|
279
|
+
},
|
|
280
|
+
});
|
|
281
|
+
const toCardPolicyStep5Review = (payload) => ({
|
|
282
|
+
draftPolicies: (payload.draft_policies ?? []).map(toCardPolicyDraftPolicy),
|
|
283
|
+
groupingSource: payload.grouping_source ?? 'none',
|
|
284
|
+
prompt: payload.prompt ?? '',
|
|
285
|
+
});
|
|
286
|
+
const toCardPolicyWizardPlan = (payload) => ({
|
|
287
|
+
step5Review: toCardPolicyStep5Review(payload.step_5_review),
|
|
288
|
+
});
|
|
289
|
+
const toCardPolicyUploadSource = (payload) => ({
|
|
290
|
+
confidenceScore: payload.confidence_score,
|
|
291
|
+
fileName: payload.file_name,
|
|
292
|
+
lowConfidenceFields: payload.low_confidence_fields ?? [],
|
|
293
|
+
});
|
|
294
|
+
const toCardPolicyInitialData = (payload) => {
|
|
295
|
+
if (payload.mode === 'upload') {
|
|
296
|
+
return {
|
|
297
|
+
policyKind: 'upload',
|
|
298
|
+
wizardPlan: payload.wizard_plan != null
|
|
299
|
+
? toCardPolicyWizardPlan(payload.wizard_plan)
|
|
300
|
+
: undefined,
|
|
301
|
+
source: payload.source != null
|
|
302
|
+
? toCardPolicyUploadSource(payload.source)
|
|
303
|
+
: undefined,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
return {
|
|
307
|
+
policyKind: payload.mode,
|
|
308
|
+
wizardPlan: toCardPolicyWizardPlan(payload.wizard_plan),
|
|
309
|
+
};
|
|
310
|
+
};
|
|
148
311
|
const toAiCfoVisualizationData = (data) => {
|
|
149
312
|
if ('x' in data && 'y' in data) {
|
|
150
313
|
// Normalize y to always be an array
|
|
@@ -378,10 +541,8 @@ const aiCfo = (0, toolkit_1.createSlice)({
|
|
|
378
541
|
// Update state - append new complete Q&As to existing ones
|
|
379
542
|
session.questionAnswers = mergeQuestionAnswerPairs(session.questionAnswers, completeQAs);
|
|
380
543
|
},
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
* Used for push notification payloads that may introduce a new question.
|
|
384
|
-
*/
|
|
544
|
+
// Upserts the response block when `questionAnswerId` exists; otherwise adds the Q/A
|
|
545
|
+
// entry. Used for push notification payloads that may introduce a new question.
|
|
385
546
|
upsertOrAddQuestionAnswerPayload(draft, action) {
|
|
386
547
|
const { chatSessionId, questionAnswerId, question: { questionId, createdAt, text }, answerPayload, userId, insertQuestionAnswer, } = action.payload;
|
|
387
548
|
const session = draft.aiCfoByChatSessionId[chatSessionId];
|
|
@@ -458,10 +619,82 @@ const aiCfo = (0, toolkit_1.createSlice)({
|
|
|
458
619
|
session.questionAnswers.push(qa);
|
|
459
620
|
}
|
|
460
621
|
},
|
|
622
|
+
// Patches an upload-mode card-policy answer with the wizard plan + source returned
|
|
623
|
+
// by `policy-recommendation-from-upload`. No-op for non-upload / missing targets.
|
|
624
|
+
updateAiCfoAnswerCardPolicyWizardPlan(draft, action) {
|
|
625
|
+
const { answerId, chatSessionId, source, wizardPlan } = action.payload;
|
|
626
|
+
const session = draft.aiCfoByChatSessionId[chatSessionId];
|
|
627
|
+
if (session == null) {
|
|
628
|
+
return;
|
|
629
|
+
}
|
|
630
|
+
const qa = session.questionAnswers.find((entry) => entry.questionAnswerId === answerId);
|
|
631
|
+
if (qa == null) {
|
|
632
|
+
return;
|
|
633
|
+
}
|
|
634
|
+
for (const response of Object.values(qa.responses)) {
|
|
635
|
+
const visualization = response?.content.visualization;
|
|
636
|
+
if (visualization == null ||
|
|
637
|
+
visualization.type !== 'interactive_form') {
|
|
638
|
+
continue;
|
|
639
|
+
}
|
|
640
|
+
const data = visualization.data;
|
|
641
|
+
if (data.formType !== 'card_policy' ||
|
|
642
|
+
data.payload.policyKind !== 'upload') {
|
|
643
|
+
continue;
|
|
644
|
+
}
|
|
645
|
+
data.payload = {
|
|
646
|
+
...data.payload,
|
|
647
|
+
wizardPlan,
|
|
648
|
+
source: source ?? data.payload.source,
|
|
649
|
+
};
|
|
650
|
+
}
|
|
651
|
+
},
|
|
652
|
+
// Renders a "Creating…" placeholder while the cards/policy create mutation runs.
|
|
653
|
+
// Caller supplies a stable `id` (updated in place by `updateSyntheticAiCfoAnswer`).
|
|
654
|
+
appendSyntheticAiCfoAnswer(draft, action) {
|
|
655
|
+
const { chatSessionId, id, kind, createdAt, entityIds, sourceQuestionAnswerId, } = action.payload;
|
|
656
|
+
if (draft.syntheticAnswersByChatSessionId[chatSessionId] == null) {
|
|
657
|
+
draft.syntheticAnswersByChatSessionId[chatSessionId] = [];
|
|
658
|
+
}
|
|
659
|
+
draft.syntheticAnswersByChatSessionId[chatSessionId].push({
|
|
660
|
+
id,
|
|
661
|
+
kind,
|
|
662
|
+
entityIds: entityIds ?? [],
|
|
663
|
+
createdAt,
|
|
664
|
+
sourceQuestionAnswerId,
|
|
665
|
+
});
|
|
666
|
+
},
|
|
667
|
+
// Transitions a bubble from `creating_*` to `created_*` once the mutation completes.
|
|
668
|
+
updateSyntheticAiCfoAnswer(draft, action) {
|
|
669
|
+
const { chatSessionId, id, kind, entityIds } = action.payload;
|
|
670
|
+
const list = draft.syntheticAnswersByChatSessionId[chatSessionId];
|
|
671
|
+
if (list == null) {
|
|
672
|
+
return;
|
|
673
|
+
}
|
|
674
|
+
const entry = list.find((item) => item.id === id);
|
|
675
|
+
if (entry == null) {
|
|
676
|
+
return;
|
|
677
|
+
}
|
|
678
|
+
entry.kind = kind;
|
|
679
|
+
if (entityIds != null) {
|
|
680
|
+
entry.entityIds = entityIds;
|
|
681
|
+
}
|
|
682
|
+
},
|
|
683
|
+
removeSyntheticAiCfoAnswer(draft, action) {
|
|
684
|
+
const { chatSessionId, id } = action.payload;
|
|
685
|
+
const list = draft.syntheticAnswersByChatSessionId[chatSessionId];
|
|
686
|
+
if (list == null) {
|
|
687
|
+
return;
|
|
688
|
+
}
|
|
689
|
+
draft.syntheticAnswersByChatSessionId[chatSessionId] = list.filter((item) => item.id !== id);
|
|
690
|
+
},
|
|
691
|
+
clearSyntheticAiCfoAnswers(draft, action) {
|
|
692
|
+
delete draft.syntheticAnswersByChatSessionId[action.payload];
|
|
693
|
+
},
|
|
461
694
|
clearSession(draft, action) {
|
|
462
695
|
const sessionId = action.payload;
|
|
463
696
|
delete draft.aiCfoByChatSessionId[sessionId];
|
|
464
|
-
|
|
697
|
+
delete draft.syntheticAnswersByChatSessionId[sessionId];
|
|
465
698
|
if (draft.partialQuestionAnswers?.[sessionId] != null) {
|
|
466
699
|
draft.partialQuestionAnswers[sessionId] = undefined;
|
|
467
700
|
}
|
|
@@ -469,6 +702,7 @@ const aiCfo = (0, toolkit_1.createSlice)({
|
|
|
469
702
|
clearAiCfo(draft) {
|
|
470
703
|
draft.aiCfoByChatSessionId = {};
|
|
471
704
|
draft.partialQuestionAnswers = {};
|
|
705
|
+
draft.syntheticAnswersByChatSessionId = {};
|
|
472
706
|
},
|
|
473
707
|
deleteQuestion(draft, action) {
|
|
474
708
|
const { chatSessionId, questionAnswerId } = action.payload;
|
|
@@ -481,6 +715,12 @@ const aiCfo = (0, toolkit_1.createSlice)({
|
|
|
481
715
|
if (idx !== -1) {
|
|
482
716
|
session.questionAnswers.splice(idx, 1);
|
|
483
717
|
}
|
|
718
|
+
// Drop synthetic bubbles whose sourceQuestionAnswerId is the deleted Q/A; otherwise "Creating…" / "Created" tiles outlive their Q/A.
|
|
719
|
+
const syntheticAnswers = draft.syntheticAnswersByChatSessionId[chatSessionId];
|
|
720
|
+
if (syntheticAnswers != null) {
|
|
721
|
+
draft.syntheticAnswersByChatSessionId[chatSessionId] =
|
|
722
|
+
syntheticAnswers.filter((answer) => answer.sourceQuestionAnswerId !== questionAnswerId);
|
|
723
|
+
}
|
|
484
724
|
},
|
|
485
725
|
},
|
|
486
726
|
});
|
|
@@ -493,5 +733,5 @@ const toChatSession = (chatSessionPayload) => {
|
|
|
493
733
|
createdAt: (0, zeniDayJS_1.date)(created_at),
|
|
494
734
|
};
|
|
495
735
|
};
|
|
496
|
-
_a = aiCfo.actions, exports.setNewSession = _a.setNewSession, exports.clearSession = _a.clearSession, exports.setSessions = _a.setSessions, exports.setChatHistory = _a.setChatHistory, exports.upsertAnswerPayload = _a.upsertAnswerPayload, exports.upsertOrAddQuestionAnswerPayload = _a.upsertOrAddQuestionAnswerPayload, exports.addQuestionPayload = _a.addQuestionPayload, exports.clearAiCfo = _a.clearAiCfo, exports.deleteQuestion = _a.deleteQuestion;
|
|
736
|
+
_a = aiCfo.actions, exports.setNewSession = _a.setNewSession, exports.clearSession = _a.clearSession, exports.setSessions = _a.setSessions, exports.setChatHistory = _a.setChatHistory, exports.upsertAnswerPayload = _a.upsertAnswerPayload, exports.upsertOrAddQuestionAnswerPayload = _a.upsertOrAddQuestionAnswerPayload, exports.addQuestionPayload = _a.addQuestionPayload, exports.clearAiCfo = _a.clearAiCfo, exports.deleteQuestion = _a.deleteQuestion, exports.updateAiCfoAnswerCardPolicyWizardPlan = _a.updateAiCfoAnswerCardPolicyWizardPlan, exports.appendSyntheticAiCfoAnswer = _a.appendSyntheticAiCfoAnswer, exports.updateSyntheticAiCfoAnswer = _a.updateSyntheticAiCfoAnswer, exports.removeSyntheticAiCfoAnswer = _a.removeSyntheticAiCfoAnswer, exports.clearSyntheticAiCfoAnswers = _a.clearSyntheticAiCfoAnswers;
|
|
497
737
|
exports.default = aiCfo.reducer;
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { ID } from '../../commonStateTypes/common';
|
|
2
|
-
import { AiCfoQuestionWithAnswer, AiCfoState, ChatSession } from './aiCfoState';
|
|
2
|
+
import { AiCfoQuestionWithAnswer, AiCfoState, ChatSession, SyntheticAiCfoAnswer } from './aiCfoState';
|
|
3
3
|
export declare function getAllQuestionAnswersForChatSession(state: AiCfoState, chatSessionId: ID): AiCfoQuestionWithAnswer[];
|
|
4
4
|
export declare function getQuestionAnswerByIdForChatSession(state: AiCfoState, chatSessionId: ID, questionAnswerId: ID): AiCfoQuestionWithAnswer | undefined;
|
|
5
5
|
export declare function getAllQuestionsForChatSession(state: AiCfoState, chatSessionId: ID): string[];
|
|
6
6
|
export interface AiCfoSelectorView {
|
|
7
7
|
allSessionsWithOrderedQuestionAnswers: ChatSessionWithOrderedQuestionAnswers[];
|
|
8
|
+
syntheticAnswersByChatSessionId: Record<ID, SyntheticAiCfoAnswer[]>;
|
|
8
9
|
}
|
|
9
10
|
export interface ChatSessionWithOrderedQuestionAnswers {
|
|
10
11
|
chatSession: ChatSession;
|
|
11
12
|
questionAnswers: AiCfoQuestionWithAnswer[];
|
|
12
13
|
}
|
|
13
14
|
export declare function getAiCfoSelectorView(state: AiCfoState): AiCfoSelectorView;
|
|
15
|
+
export declare function getSyntheticAiCfoAnswersForChatSession(state: AiCfoState, chatSessionId: ID): SyntheticAiCfoAnswer[];
|
|
16
|
+
export declare function getSyntheticAiCfoAnswerByQuestionAnswerId(state: AiCfoState, chatSessionId: ID, questionAnswerId: ID): SyntheticAiCfoAnswer | undefined;
|
|
@@ -4,6 +4,8 @@ exports.getAllQuestionAnswersForChatSession = getAllQuestionAnswersForChatSessio
|
|
|
4
4
|
exports.getQuestionAnswerByIdForChatSession = getQuestionAnswerByIdForChatSession;
|
|
5
5
|
exports.getAllQuestionsForChatSession = getAllQuestionsForChatSession;
|
|
6
6
|
exports.getAiCfoSelectorView = getAiCfoSelectorView;
|
|
7
|
+
exports.getSyntheticAiCfoAnswersForChatSession = getSyntheticAiCfoAnswersForChatSession;
|
|
8
|
+
exports.getSyntheticAiCfoAnswerByQuestionAnswerId = getSyntheticAiCfoAnswerByQuestionAnswerId;
|
|
7
9
|
function getAllQuestionAnswersForChatSession(state, chatSessionId) {
|
|
8
10
|
const arr = state.aiCfoByChatSessionId[chatSessionId]?.questionAnswers ?? [];
|
|
9
11
|
return arr
|
|
@@ -38,5 +40,21 @@ function getAiCfoSelectorView(state) {
|
|
|
38
40
|
: [],
|
|
39
41
|
}))
|
|
40
42
|
.sort((a, b) => b.chatSession.createdAt.valueOf() - a.chatSession.createdAt.valueOf());
|
|
41
|
-
return {
|
|
43
|
+
return {
|
|
44
|
+
allSessionsWithOrderedQuestionAnswers,
|
|
45
|
+
syntheticAnswersByChatSessionId: state.syntheticAnswersByChatSessionId ?? {},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function getSyntheticAiCfoAnswersForChatSession(state, chatSessionId) {
|
|
49
|
+
const arr = state.syntheticAnswersByChatSessionId?.[chatSessionId] ?? [];
|
|
50
|
+
return arr
|
|
51
|
+
.slice()
|
|
52
|
+
.sort((a, b) => a.createdAt.valueOf() - b.createdAt.valueOf());
|
|
53
|
+
}
|
|
54
|
+
function getSyntheticAiCfoAnswerByQuestionAnswerId(state, chatSessionId, questionAnswerId) {
|
|
55
|
+
const arr = state.syntheticAnswersByChatSessionId?.[chatSessionId];
|
|
56
|
+
if (arr == null) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
return arr.find((answer) => answer.sourceQuestionAnswerId === questionAnswerId);
|
|
42
60
|
}
|
|
@@ -9,9 +9,13 @@ export interface AiCfoAnswerParagraph {
|
|
|
9
9
|
}>;
|
|
10
10
|
}
|
|
11
11
|
export declare const ALL_AI_CFO_CHARTS_TYPES: readonly ["bar_chart", "pie_chart", "line_chart"];
|
|
12
|
-
export declare const ALL_AI_CFO_VISUALIZATION_TYPES: readonly ["bar_chart", "pie_chart", "line_chart", "table"];
|
|
13
|
-
export declare const
|
|
14
|
-
export declare const
|
|
12
|
+
export declare const ALL_AI_CFO_VISUALIZATION_TYPES: readonly ["bar_chart", "pie_chart", "line_chart", "table", "interactive_form"];
|
|
13
|
+
export declare const ALL_INTERACTIVE_FORM_TYPES: readonly ["cards_creation", "card_policy"];
|
|
14
|
+
export declare const toInteractiveFormType: (v: string) => "cards_creation" | "card_policy";
|
|
15
|
+
export declare const toInteractiveFormTypeStrict: (v: string) => "cards_creation" | "card_policy" | undefined;
|
|
16
|
+
export type InteractiveFormType = ReturnType<typeof toInteractiveFormType>;
|
|
17
|
+
export declare const toAiCfoVisualizationType: (v: string) => "bar_chart" | "pie_chart" | "line_chart" | "table" | "interactive_form";
|
|
18
|
+
export declare const toAiCfoVisualizationTypeStrict: (v: string) => "bar_chart" | "pie_chart" | "line_chart" | "table" | "interactive_form" | undefined;
|
|
15
19
|
export type AiCfoVisualizationType = ReturnType<typeof toAiCfoVisualizationType>;
|
|
16
20
|
export declare const toAiCfoChartType: (v: string) => "bar_chart" | "pie_chart" | "line_chart";
|
|
17
21
|
export declare const toAiCfoChartTypeStrict: (v: string) => "bar_chart" | "pie_chart" | "line_chart" | undefined;
|
|
@@ -53,8 +57,87 @@ export interface ChartVisualization {
|
|
|
53
57
|
lines?: string[];
|
|
54
58
|
yFormat?: YFormat;
|
|
55
59
|
}
|
|
60
|
+
export type CardsCardKind = 'vendor' | 'class' | 'category';
|
|
61
|
+
export interface CardNameOption {
|
|
62
|
+
id: string;
|
|
63
|
+
kind: CardsCardKind;
|
|
64
|
+
label: string;
|
|
65
|
+
}
|
|
66
|
+
export interface CardsCreationCommonData {
|
|
67
|
+
cardNameOptions: CardNameOption[];
|
|
68
|
+
suggestedOwnerUserIdByTeamId: Record<string, ID | undefined>;
|
|
69
|
+
}
|
|
70
|
+
export type CardsCreationInitialData = (CardsCreationCommonData & {
|
|
71
|
+
mode: 'review';
|
|
72
|
+
teamRows: Array<{
|
|
73
|
+
avgMonthlySpend: string;
|
|
74
|
+
cardKind: CardsCardKind;
|
|
75
|
+
id: string;
|
|
76
|
+
label: string;
|
|
77
|
+
recommendedLimit: string;
|
|
78
|
+
recommendedLimitCadence?: string;
|
|
79
|
+
}>;
|
|
80
|
+
}) | (CardsCreationCommonData & {
|
|
81
|
+
cardRows: Array<{
|
|
82
|
+
cardKind: CardsCardKind;
|
|
83
|
+
id: string;
|
|
84
|
+
label: string;
|
|
85
|
+
recommendedLimit?: number;
|
|
86
|
+
suggestedOwnerUserId?: ID;
|
|
87
|
+
}>;
|
|
88
|
+
mode: 'create';
|
|
89
|
+
});
|
|
90
|
+
export interface CardPolicyDraftPolicyEntity {
|
|
91
|
+
categoryCodes: string[];
|
|
92
|
+
merchantNames: string[];
|
|
93
|
+
}
|
|
94
|
+
export interface CardPolicySpendLimits {
|
|
95
|
+
transaction: number;
|
|
96
|
+
}
|
|
97
|
+
export interface CardPolicyDraftPolicy {
|
|
98
|
+
allowedEntity: CardPolicyDraftPolicyEntity;
|
|
99
|
+
applyToCards: string[];
|
|
100
|
+
blockedEntity: CardPolicyDraftPolicyEntity;
|
|
101
|
+
description: string;
|
|
102
|
+
id: string;
|
|
103
|
+
mode: string;
|
|
104
|
+
name: string;
|
|
105
|
+
requiredReceiptThreshold: number;
|
|
106
|
+
spendLimits: CardPolicySpendLimits;
|
|
107
|
+
}
|
|
108
|
+
export interface CardPolicyStep5Review {
|
|
109
|
+
draftPolicies: CardPolicyDraftPolicy[];
|
|
110
|
+
groupingSource: string;
|
|
111
|
+
prompt: string;
|
|
112
|
+
}
|
|
113
|
+
export interface CardPolicyWizardPlan {
|
|
114
|
+
step5Review: CardPolicyStep5Review;
|
|
115
|
+
}
|
|
116
|
+
export interface CardPolicyUploadSource {
|
|
117
|
+
confidenceScore: number;
|
|
118
|
+
fileName: string;
|
|
119
|
+
lowConfidenceFields: string[];
|
|
120
|
+
}
|
|
121
|
+
export type CardPolicyInitialData = {
|
|
122
|
+
policyKind: 'auto';
|
|
123
|
+
wizardPlan: CardPolicyWizardPlan;
|
|
124
|
+
} | {
|
|
125
|
+
policyKind: 'guided';
|
|
126
|
+
wizardPlan: CardPolicyWizardPlan;
|
|
127
|
+
} | {
|
|
128
|
+
policyKind: 'upload';
|
|
129
|
+
source?: CardPolicyUploadSource;
|
|
130
|
+
wizardPlan?: CardPolicyWizardPlan;
|
|
131
|
+
};
|
|
132
|
+
export type InteractiveFormVisualization = {
|
|
133
|
+
formType: 'cards_creation';
|
|
134
|
+
payload: CardsCreationInitialData;
|
|
135
|
+
} | {
|
|
136
|
+
formType: 'card_policy';
|
|
137
|
+
payload: CardPolicyInitialData;
|
|
138
|
+
};
|
|
56
139
|
export interface AiCfoVisualization {
|
|
57
|
-
data: TableVisualization | ChartVisualization;
|
|
140
|
+
data: TableVisualization | ChartVisualization | InteractiveFormVisualization;
|
|
58
141
|
type: AiCfoVisualizationType;
|
|
59
142
|
}
|
|
60
143
|
export declare const toMessageSender: (v: string) => "user" | "agent";
|
|
@@ -112,7 +195,17 @@ export interface ChatSessionWithMessages {
|
|
|
112
195
|
chatSession: ChatSession;
|
|
113
196
|
questionAnswers: AiCfoQuestionWithAnswer[];
|
|
114
197
|
}
|
|
198
|
+
export declare const ALL_SYNTHETIC_AI_CFO_ANSWER_KINDS: readonly ["creating_cards", "creating_policy", "created_cards", "created_policy"];
|
|
199
|
+
export type SyntheticAiCfoAnswerKind = (typeof ALL_SYNTHETIC_AI_CFO_ANSWER_KINDS)[number];
|
|
200
|
+
export interface SyntheticAiCfoAnswer {
|
|
201
|
+
createdAt: ZeniDate;
|
|
202
|
+
entityIds: ID[];
|
|
203
|
+
id: ID;
|
|
204
|
+
kind: SyntheticAiCfoAnswerKind;
|
|
205
|
+
sourceQuestionAnswerId: ID;
|
|
206
|
+
}
|
|
115
207
|
export interface AiCfoState {
|
|
116
208
|
aiCfoByChatSessionId: Record<ID, ChatSessionWithMessages>;
|
|
117
209
|
partialQuestionAnswers: Record<ID, AiCfoQuestionWithAnswer | undefined>;
|
|
210
|
+
syntheticAnswersByChatSessionId: Record<ID, SyntheticAiCfoAnswer[]>;
|
|
118
211
|
}
|