@zeniai/client-epic-state 5.0.93-betaAK2 → 5.0.94-betaJK1

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.
Files changed (267) hide show
  1. package/lib/common/aiCfo/aiCfoSuggestedQuestionsPageContext.d.ts +1 -1
  2. package/lib/commonStateTypes/amount.d.ts +0 -1
  3. package/lib/commonStateTypes/amount.js +1 -3
  4. package/lib/commonStateTypes/workingDayHelper.d.ts +0 -9
  5. package/lib/commonStateTypes/workingDayHelper.js +1 -28
  6. package/lib/entity/aiCfo/aiCfoPayload.d.ts +64 -5
  7. package/lib/entity/aiCfo/aiCfoReducer.d.ts +23 -2
  8. package/lib/entity/aiCfo/aiCfoReducer.js +252 -10
  9. package/lib/entity/aiCfo/aiCfoSelector.d.ts +4 -1
  10. package/lib/entity/aiCfo/aiCfoSelector.js +19 -1
  11. package/lib/entity/aiCfo/aiCfoState.d.ts +98 -4
  12. package/lib/entity/aiCfo/aiCfoState.js +18 -1
  13. package/lib/entity/cardPolicy/cardPolicyPayload.d.ts +277 -0
  14. package/lib/entity/cardPolicy/cardPolicyPayload.js +143 -0
  15. package/lib/entity/cardPolicy/cardPolicyReducer.d.ts +19 -0
  16. package/lib/entity/cardPolicy/cardPolicyReducer.js +175 -0
  17. package/lib/entity/cardPolicy/cardPolicySelector.d.ts +32 -0
  18. package/lib/entity/cardPolicy/cardPolicySelector.js +99 -0
  19. package/lib/entity/cardPolicy/cardPolicyState.d.ts +205 -0
  20. package/lib/entity/cardPolicy/cardPolicyState.js +14 -0
  21. package/lib/entity/cardPolicy/extractPolicyDocumentEpic.d.ts +18 -0
  22. package/lib/entity/cardPolicy/extractPolicyDocumentEpic.js +68 -0
  23. package/lib/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.d.ts +26 -0
  24. package/lib/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.js +47 -0
  25. package/lib/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.d.ts +25 -0
  26. package/lib/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.js +39 -0
  27. package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.d.ts +24 -0
  28. package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.js +105 -0
  29. package/lib/entity/jeSchedules/jeSchedulesTypes.d.ts +1 -1
  30. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksState.d.ts +1 -1
  31. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  32. package/lib/entity/snackbar/snackbarTypes.js +4 -0
  33. package/lib/entity/task/taskPayload.d.ts +1 -0
  34. package/lib/entity/task/taskPayload.js +1 -0
  35. package/lib/entity/task/taskReducer.d.ts +5 -1
  36. package/lib/entity/task/taskReducer.js +8 -2
  37. package/lib/entity/task/taskState.d.ts +1 -0
  38. package/lib/entity/tenant/clearAllEpic.d.ts +6 -4
  39. package/lib/entity/tenant/clearAllEpic.js +8 -4
  40. package/lib/epic.d.ts +16 -7
  41. package/lib/epic.js +16 -7
  42. package/lib/esm/commonStateTypes/amount.js +0 -1
  43. package/lib/esm/commonStateTypes/workingDayHelper.js +0 -26
  44. package/lib/esm/entity/aiCfo/aiCfoReducer.js +252 -10
  45. package/lib/esm/entity/aiCfo/aiCfoSelector.js +17 -1
  46. package/lib/esm/entity/aiCfo/aiCfoState.js +15 -0
  47. package/lib/esm/entity/cardPolicy/cardPolicyPayload.js +130 -0
  48. package/lib/esm/entity/cardPolicy/cardPolicyReducer.js +171 -0
  49. package/lib/esm/entity/cardPolicy/cardPolicySelector.js +75 -0
  50. package/lib/esm/entity/cardPolicy/cardPolicyState.js +9 -0
  51. package/lib/esm/entity/cardPolicy/extractPolicyDocumentEpic.js +64 -0
  52. package/lib/esm/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.js +43 -0
  53. package/lib/esm/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.js +35 -0
  54. package/lib/esm/entity/cardPolicy/policyRecommendationFromUploadEpic.js +101 -0
  55. package/lib/esm/entity/snackbar/snackbarTypes.js +4 -0
  56. package/lib/esm/entity/task/taskPayload.js +1 -0
  57. package/lib/esm/entity/task/taskReducer.js +7 -1
  58. package/lib/esm/entity/tenant/clearAllEpic.js +8 -4
  59. package/lib/esm/epic.js +16 -7
  60. package/lib/esm/index.js +41 -16
  61. package/lib/esm/reducer.js +12 -6
  62. package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +6 -3
  63. package/lib/esm/view/aiCfoView/epics/createSessionAndSubmitEpic.js +5 -2
  64. package/lib/esm/view/aiCfoView/epics/createSessionEpic.js +2 -1
  65. package/lib/esm/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +12 -2
  66. package/lib/esm/view/spendManagement/autotransferRules/autoTransferRulesSelector.js +2 -22
  67. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.js +52 -0
  68. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.js +22 -0
  69. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.js +1 -0
  70. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.js +36 -0
  71. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.js +39 -0
  72. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.js +34 -0
  73. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +58 -0
  74. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.js +21 -0
  75. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.js +1 -0
  76. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.js +38 -0
  77. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +289 -0
  78. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +109 -0
  79. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +44 -0
  80. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +111 -0
  81. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +25 -0
  82. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +363 -0
  83. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +36 -0
  84. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +19 -0
  85. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +6 -0
  86. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +119 -0
  87. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +154 -0
  88. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +22 -0
  89. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.js +1 -0
  90. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +39 -0
  91. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +140 -0
  92. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.js +20 -0
  93. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +100 -0
  94. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +96 -0
  95. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +59 -0
  96. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +24 -0
  97. package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +25 -0
  98. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +1 -0
  99. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +34 -0
  100. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +57 -0
  101. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +35 -0
  102. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.js +2 -2
  103. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +42 -4
  104. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +35 -0
  105. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +62 -0
  106. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +44 -0
  107. package/lib/esm/view/taskManager/taskDetailView/epics/createSubTaskEpic.js +80 -0
  108. package/lib/esm/view/taskManager/taskDetailView/epics/fetchSubTasksEpic.js +36 -0
  109. package/lib/esm/view/taskManager/taskDetailView/epics/fetchTaskDetailEpic.js +13 -0
  110. package/lib/esm/view/taskManager/taskDetailView/taskDetailReducer.js +51 -2
  111. package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +19 -8
  112. package/lib/index.d.ts +47 -22
  113. package/lib/index.js +185 -34
  114. package/lib/reducer.d.ts +12 -6
  115. package/lib/reducer.js +12 -6
  116. package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +11 -2
  117. package/lib/view/aiCfoView/aiCfoViewReducer.js +6 -3
  118. package/lib/view/aiCfoView/epics/createSessionAndSubmitEpic.js +5 -2
  119. package/lib/view/aiCfoView/epics/createSessionEpic.js +2 -1
  120. package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.d.ts +8 -1
  121. package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +12 -2
  122. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  123. package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +1 -1
  124. package/lib/view/people/peopleTypes.d.ts +1 -1
  125. package/lib/view/scheduleView/scheduleListView/scheduleListTypes.d.ts +1 -1
  126. package/lib/view/spendManagement/autotransferRules/autoTransferRulesSelector.d.ts +1 -8
  127. package/lib/view/spendManagement/autotransferRules/autoTransferRulesSelector.js +1 -21
  128. package/lib/view/spendManagement/autotransferRules/autoTransferRulesState.d.ts +0 -22
  129. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.d.ts +14 -0
  130. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.js +56 -0
  131. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.d.ts +15 -0
  132. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.js +28 -0
  133. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.d.ts +8 -0
  134. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.js +2 -0
  135. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.d.ts +8 -0
  136. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.js +40 -0
  137. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.d.ts +8 -0
  138. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.js +43 -0
  139. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.d.ts +8 -0
  140. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.js +38 -0
  141. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.d.ts +15 -0
  142. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +62 -0
  143. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.d.ts +15 -0
  144. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.js +27 -0
  145. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.d.ts +7 -0
  146. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.js +2 -0
  147. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.d.ts +8 -0
  148. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.js +42 -0
  149. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.d.ts +8 -0
  150. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +294 -0
  151. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.d.ts +8 -0
  152. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +113 -0
  153. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.d.ts +9 -0
  154. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +48 -0
  155. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.d.ts +8 -0
  156. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +115 -0
  157. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.d.ts +13 -0
  158. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +29 -0
  159. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.d.ts +14 -0
  160. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +369 -0
  161. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.d.ts +6 -0
  162. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +40 -0
  163. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.d.ts +7 -0
  164. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +26 -0
  165. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.d.ts +116 -0
  166. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +10 -0
  167. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.d.ts +33 -0
  168. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +126 -0
  169. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.d.ts +52 -0
  170. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +158 -0
  171. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.d.ts +11 -0
  172. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +31 -0
  173. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.d.ts +12 -0
  174. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.js +2 -0
  175. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.d.ts +8 -0
  176. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +43 -0
  177. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.d.ts +10 -0
  178. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +144 -0
  179. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.d.ts +7 -0
  180. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.js +24 -0
  181. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.d.ts +11 -0
  182. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +104 -0
  183. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.d.ts +22 -0
  184. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +100 -0
  185. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.d.ts +8 -0
  186. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +63 -0
  187. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.d.ts +3 -0
  188. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +28 -0
  189. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardList.d.ts +1 -1
  190. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.d.ts +14 -0
  191. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +27 -1
  192. package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.d.ts +34 -0
  193. package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +2 -0
  194. package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.d.ts +7 -0
  195. package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +38 -0
  196. package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.d.ts +12 -0
  197. package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +61 -0
  198. package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.d.ts +9 -0
  199. package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +39 -0
  200. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.d.ts +2 -2
  201. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.js +1 -1
  202. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.d.ts +12 -2
  203. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +43 -5
  204. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.d.ts +7 -0
  205. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +42 -1
  206. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardState.d.ts +5 -0
  207. package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.d.ts +11 -0
  208. package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +66 -0
  209. package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.d.ts +3 -0
  210. package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +48 -0
  211. package/lib/view/taskManager/taskDetailView/epics/createSubTaskEpic.d.ts +9 -0
  212. package/lib/view/taskManager/taskDetailView/epics/createSubTaskEpic.js +84 -0
  213. package/lib/view/taskManager/taskDetailView/epics/fetchSubTasksEpic.d.ts +8 -0
  214. package/lib/view/taskManager/taskDetailView/epics/fetchSubTasksEpic.js +40 -0
  215. package/lib/view/taskManager/taskDetailView/epics/fetchTaskDetailEpic.d.ts +2 -1
  216. package/lib/view/taskManager/taskDetailView/epics/fetchTaskDetailEpic.js +13 -0
  217. package/lib/view/taskManager/taskDetailView/taskDetail.d.ts +13 -0
  218. package/lib/view/taskManager/taskDetailView/taskDetailReducer.d.ts +14 -2
  219. package/lib/view/taskManager/taskDetailView/taskDetailReducer.js +52 -3
  220. package/lib/view/taskManager/taskDetailView/taskDetailSelector.d.ts +2 -1
  221. package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +17 -6
  222. package/lib/view/taskManager/taskListView/taskListReducer.d.ts +1 -1
  223. package/lib/view/transactionDetail/journalEntryLinesViewModel.d.ts +1 -1
  224. package/lib/zeniAPI.d.ts +0 -1
  225. package/package.json +1 -1
  226. package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowPayload.js +0 -31
  227. package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowReducer.js +0 -69
  228. package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowSelector.js +0 -29
  229. package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowState.js +0 -47
  230. package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/epics/fetchCashManagementSettingsEpic.js +0 -34
  231. package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/epics/saveAutoSweepSettingsEpic.js +0 -32
  232. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.js +0 -54
  233. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.js +0 -92
  234. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.js +0 -225
  235. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.js +0 -10
  236. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.js +0 -39
  237. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.js +0 -36
  238. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementRecommendationEpic.js +0 -27
  239. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchRecentTransferEpic.js +0 -28
  240. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowPayload.d.ts +0 -48
  241. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowPayload.js +0 -36
  242. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowReducer.d.ts +0 -21
  243. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowReducer.js +0 -73
  244. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowSelector.d.ts +0 -40
  245. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowSelector.js +0 -33
  246. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowState.d.ts +0 -37
  247. package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowState.js +0 -53
  248. package/lib/view/spendManagement/cashManagement/autoSweepFlow/epics/fetchCashManagementSettingsEpic.d.ts +0 -14
  249. package/lib/view/spendManagement/cashManagement/autoSweepFlow/epics/fetchCashManagementSettingsEpic.js +0 -38
  250. package/lib/view/spendManagement/cashManagement/autoSweepFlow/epics/saveAutoSweepSettingsEpic.d.ts +0 -7
  251. package/lib/view/spendManagement/cashManagement/autoSweepFlow/epics/saveAutoSweepSettingsEpic.js +0 -36
  252. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.d.ts +0 -56
  253. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.js +0 -60
  254. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.d.ts +0 -22
  255. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.js +0 -96
  256. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.d.ts +0 -59
  257. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.js +0 -230
  258. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.d.ts +0 -122
  259. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.js +0 -13
  260. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.d.ts +0 -23
  261. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.js +0 -43
  262. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.d.ts +0 -9
  263. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.js +0 -40
  264. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementRecommendationEpic.d.ts +0 -7
  265. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementRecommendationEpic.js +0 -31
  266. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchRecentTransferEpic.d.ts +0 -15
  267. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchRecentTransferEpic.js +0 -32
@@ -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';
@@ -7,4 +7,3 @@ export interface Amount extends Currency {
7
7
  }
8
8
  export declare const toAmount: (amount: number, currency_code: string, currency_symbol: string) => Amount;
9
9
  export declare const toAmountWC: (amount: number, currency: Currency) => Amount;
10
- export declare const zeroAmount: (currencyCode?: string, currencySymbol?: string) => Amount;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.zeroAmount = exports.toAmountWC = exports.toAmount = void 0;
3
+ exports.toAmountWC = exports.toAmount = void 0;
4
4
  const toAmount = (amount, currency_code, currency_symbol) => ({
5
5
  amount: amount,
6
6
  currencyCode: currency_code,
@@ -10,5 +10,3 @@ exports.toAmount = toAmount;
10
10
  /* to amount with currency */
11
11
  const toAmountWC = (amount, currency) => (0, exports.toAmount)(amount, currency.currencyCode, currency.currencySymbol);
12
12
  exports.toAmountWC = toAmountWC;
13
- const zeroAmount = (currencyCode = 'USD', currencySymbol = '$') => (0, exports.toAmount)(0, currencyCode, currencySymbol);
14
- exports.zeroAmount = zeroAmount;
@@ -4,15 +4,6 @@ export declare const startDate = "2000-01-01";
4
4
  export declare const endDate = "2070-12-31";
5
5
  export declare const PAYMENT_BUSINESS_DAYS = 4;
6
6
  export declare const holidaysFormatted: string[];
7
- export type NextTransferFrequency = 'daily' | 'weekly' | 'biweekly' | 'monthly';
8
- /**
9
- * Returns the next scheduled transfer date for a recurring transfer/sweep,
10
- * given a frequency cadence. Advances by the cadence and then skips past
11
- * weekends and US holidays. Used by both:
12
- * - `<ReviewAutoTransferRuleDrawer>` (web-c) for the display "next transfer"
13
- * - `saveAutoSweepSettingsEpic` for the `first_run_date` PUT payload
14
- */
15
- export declare const getNextTransferDate: (frequency: NextTransferFrequency) => ZeniDate;
16
7
  export declare const getNextNthWorkingDay: (date: Date, filterDaysIndex: number[], numberOfWorkingDays: number) => Date;
17
8
  export declare const getPreviousNthWorkingDay: (date: Date, filterDaysIndex: number[], numberOfWorkingDays: number) => Date;
18
9
  export declare const isHolidayToday: (filterDaysIndex: number[]) => boolean;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isHoliday = exports.getYearsList = exports.filterDays = exports.isHolidayToday = exports.getPreviousNthWorkingDay = exports.getNextNthWorkingDay = exports.getNextTransferDate = exports.holidaysFormatted = exports.PAYMENT_BUSINESS_DAYS = exports.endDate = exports.startDate = exports.standardFormat = void 0;
6
+ exports.isHoliday = exports.getYearsList = exports.filterDays = exports.isHolidayToday = exports.getPreviousNthWorkingDay = exports.getNextNthWorkingDay = exports.holidaysFormatted = exports.PAYMENT_BUSINESS_DAYS = exports.endDate = exports.startDate = exports.standardFormat = void 0;
7
7
  const date_holidays_1 = __importDefault(require("date-holidays"));
8
8
  const zeniDayJS_1 = require("../zeniDayJS");
9
9
  exports.standardFormat = 'MM/DD/YYYY';
@@ -16,33 +16,6 @@ const holidays = dateHolidays
16
16
  .filter((holiday) => holiday.type === 'public' || holiday.type === 'bank')
17
17
  .map((holiday) => (0, zeniDayJS_1.date)(holiday.date).toDate()); // https://www.linkedin.com/pulse/fix-invalid-date-safari-ie-hatem-ahmad/
18
18
  exports.holidaysFormatted = holidays.map((holiday) => (0, zeniDayJS_1.date)(holiday.toDateString()).format(exports.standardFormat));
19
- /**
20
- * Returns the next scheduled transfer date for a recurring transfer/sweep,
21
- * given a frequency cadence. Advances by the cadence and then skips past
22
- * weekends and US holidays. Used by both:
23
- * - `<ReviewAutoTransferRuleDrawer>` (web-c) for the display "next transfer"
24
- * - `saveAutoSweepSettingsEpic` for the `first_run_date` PUT payload
25
- */
26
- const getNextTransferDate = (frequency) => {
27
- const date = new Date();
28
- if (frequency === 'daily') {
29
- date.setDate(date.getDate() + 1);
30
- }
31
- else if (frequency === 'weekly') {
32
- date.setDate(date.getDate() + 7);
33
- }
34
- else if (frequency === 'biweekly') {
35
- date.setDate(date.getDate() + 14);
36
- }
37
- else if (frequency === 'monthly') {
38
- date.setMonth(date.getMonth() + 1);
39
- }
40
- const isWeekend = date.getDay() === 0 || date.getDay() === 6;
41
- const isHolidayDate = (0, exports.isHoliday)((0, zeniDayJS_1.date)(date.toDateString()));
42
- const result = isWeekend || isHolidayDate ? (0, exports.getNextNthWorkingDay)(date, [0, 6], 1) : date;
43
- return (0, zeniDayJS_1.date)(result.toDateString());
44
- };
45
- exports.getNextTransferDate = getNextTransferDate;
46
19
  const getNextNthWorkingDay = (date, filterDaysIndex, numberOfWorkingDays) => {
47
20
  const currentDate = new Date(date.toDateString());
48
21
  const holidaysFormatted = holidays.map((holiday) => (0, zeniDayJS_1.date)(holiday.toDateString()).format(exports.standardFormat));
@@ -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 {
@@ -41,6 +99,7 @@ export interface AiCfoAnswerPayload {
41
99
  type: string;
42
100
  visualization: AiCfoVisualizationPayload | null;
43
101
  artifact?: string | null;
102
+ artifact_host_url?: string | null;
44
103
  artifact_title?: string | null;
45
104
  follow_up_questions?: string[];
46
105
  table?: AiCfoVisualizationPayload | null;
@@ -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) {
@@ -117,6 +118,7 @@ function chatHistoryToQA(history) {
117
118
  chainOfThoughtActionSteps: [],
118
119
  artifact: parsedAgentMessage.artifact ?? undefined,
119
120
  artifactTitle: parsedAgentMessage.artifact_title ?? undefined,
121
+ artifactHostUrl: parsedAgentMessage.artifact_host_url ?? undefined,
120
122
  },
121
123
  createdAt: (0, zeniDayJS_1.date)(agentMessage.created_at),
122
124
  };
@@ -139,12 +141,174 @@ const toAiCfoVisualization = (visualization) => {
139
141
  if (visualization.type == null || visualization.data == null) {
140
142
  return undefined;
141
143
  }
144
+ // Reject unknown viz types; `?? 'table'` used to throw in the chart/table decoder
145
+ // when interactive-form payloads (no `values`) hit it.
146
+ const normalizedType = (0, aiCfoState_1.toAiCfoVisualizationTypeStrict)(visualization.type);
147
+ if (normalizedType == null) {
148
+ return undefined;
149
+ }
142
150
  return {
143
- type: (0, aiCfoState_1.toAiCfoVisualizationTypeStrict)(visualization.type) ?? 'table',
144
- data: toAiCfoVisualizationData(visualization.data),
151
+ type: normalizedType,
152
+ data: normalizedType === 'interactive_form'
153
+ ? toInteractiveFormVisualization(visualization.data)
154
+ : toAiCfoVisualizationData(visualization.data),
145
155
  };
146
156
  };
147
157
  exports.toAiCfoVisualization = toAiCfoVisualization;
158
+ const toInteractiveFormVisualization = (data) => {
159
+ // When `form_type` is missing / mistyped, infer from payload shape so a malformed
160
+ // card-policy answer doesn't get decoded as cards_creation (wrong form + submit path).
161
+ const formType = (0, aiCfoState_1.toInteractiveFormTypeStrict)(data.form_type) ??
162
+ inferInteractiveFormTypeFromPayload(data.payload);
163
+ if (formType === 'card_policy') {
164
+ return {
165
+ formType: 'card_policy',
166
+ payload: toCardPolicyInitialData(data.payload),
167
+ };
168
+ }
169
+ return {
170
+ formType: 'cards_creation',
171
+ payload: toCardsCreationInitialData(data.payload),
172
+ };
173
+ };
174
+ const inferInteractiveFormTypeFromPayload = (payload) => {
175
+ if (payload != null && typeof payload === 'object' && 'mode' in payload) {
176
+ const mode = payload.mode;
177
+ if (mode === 'auto' || mode === 'guided' || mode === 'upload') {
178
+ return 'card_policy';
179
+ }
180
+ }
181
+ return 'cards_creation';
182
+ };
183
+ const toCardsCreationInitialData = (payload) => {
184
+ const suggestedCards = payload.suggested_cards ?? [];
185
+ const ordered = [...suggestedCards].sort((a, b) => KIND_RANK[a.card_type] - KIND_RANK[b.card_type]);
186
+ const withUniqueIds = withSynthesizedIds(ordered);
187
+ const suggestedOnly = withUniqueIds.filter(({ card }) => card.is_suggested);
188
+ const cardNameOptions = withUniqueIds.map(({ card, uniqueId }) => ({
189
+ id: uniqueId,
190
+ kind: toCardKind(card.card_type),
191
+ label: card.card_name,
192
+ }));
193
+ const suggestedOwnerUserIdByTeamId = Object.fromEntries(suggestedOnly.map(({ card, uniqueId }) => [
194
+ uniqueId,
195
+ normalizeOwnerId(card.owner_id),
196
+ ]));
197
+ const common = {
198
+ cardNameOptions,
199
+ suggestedOwnerUserIdByTeamId,
200
+ };
201
+ if (payload.mode === 'create') {
202
+ return {
203
+ ...common,
204
+ mode: 'create',
205
+ cardRows: suggestedOnly.map(({ card, uniqueId }) => ({
206
+ cardKind: toCardKind(card.card_type),
207
+ id: uniqueId,
208
+ label: card.card_name,
209
+ recommendedLimit: card.credit_limit > 0 ? card.credit_limit : undefined,
210
+ suggestedOwnerUserId: normalizeOwnerId(card.owner_id),
211
+ })),
212
+ };
213
+ }
214
+ return {
215
+ ...common,
216
+ mode: 'review',
217
+ teamRows: suggestedOnly.map(({ card, uniqueId }) => ({
218
+ avgMonthlySpend: CURRENCY_FORMATTER.format(card.avg_spend),
219
+ cardKind: toCardKind(card.card_type),
220
+ id: uniqueId,
221
+ label: card.card_name,
222
+ recommendedLimit: CURRENCY_FORMATTER.format(card.credit_limit),
223
+ recommendedLimitCadence: 'Monthly',
224
+ })),
225
+ };
226
+ };
227
+ const CURRENCY_FORMATTER = new Intl.NumberFormat('en-US', {
228
+ style: 'currency',
229
+ currency: 'USD',
230
+ maximumFractionDigits: 0,
231
+ });
232
+ // BE emits `null` or `""` for "no owner picked"; collapse both to `undefined`.
233
+ const normalizeOwnerId = (ownerId) => (ownerId != null && ownerId !== '' ? ownerId : undefined);
234
+ const KIND_RANK = {
235
+ vendor: 0,
236
+ category: 1,
237
+ department: 2,
238
+ };
239
+ const toCardKind = (cardType) => {
240
+ if (cardType === 'department') {
241
+ return 'class';
242
+ }
243
+ if (cardType === 'category') {
244
+ return 'category';
245
+ }
246
+ return 'vendor';
247
+ };
248
+ // Falls back to `${kind}__${card_name_id}__${index}` when `card_name_id` collides
249
+ // (sample payloads ship the literal `"vendor_uuid"`), to keep RHF row keys unique.
250
+ const withSynthesizedIds = (cards) => {
251
+ const seen = new Set();
252
+ return cards.map((card, index) => {
253
+ const preferred = card.card_name_id;
254
+ if (preferred != null && preferred !== '' && !seen.has(preferred)) {
255
+ seen.add(preferred);
256
+ return { card, uniqueId: preferred };
257
+ }
258
+ const synthesized = `${card.card_type}__${preferred ?? 'unknown'}__${index}`;
259
+ seen.add(synthesized);
260
+ return { card, uniqueId: synthesized };
261
+ });
262
+ };
263
+ const toCardPolicyDraftPolicy = (payload, index) => ({
264
+ id: `draft-${index}`,
265
+ name: payload.name,
266
+ description: payload.description ?? '',
267
+ mode: payload.mode,
268
+ allowedEntity: {
269
+ categoryCodes: payload.allowed_entity?.category_codes ?? [],
270
+ merchantNames: payload.allowed_entity?.merchant_names ?? [],
271
+ },
272
+ blockedEntity: {
273
+ categoryCodes: payload.blocked_entity?.category_codes ?? [],
274
+ merchantNames: payload.blocked_entity?.merchant_names ?? [],
275
+ },
276
+ applyToCards: payload.apply_to_cards ?? [],
277
+ requiredReceiptThreshold: payload.required_receipt_threshold ?? 0,
278
+ spendLimits: {
279
+ transaction: payload.spend_limits?.transaction ?? 0,
280
+ },
281
+ });
282
+ const toCardPolicyStep5Review = (payload) => ({
283
+ draftPolicies: (payload.draft_policies ?? []).map(toCardPolicyDraftPolicy),
284
+ groupingSource: payload.grouping_source ?? 'none',
285
+ prompt: payload.prompt ?? '',
286
+ });
287
+ const toCardPolicyWizardPlan = (payload) => ({
288
+ step5Review: toCardPolicyStep5Review(payload.step_5_review),
289
+ });
290
+ const toCardPolicyUploadSource = (payload) => ({
291
+ confidenceScore: payload.confidence_score,
292
+ fileName: payload.file_name,
293
+ lowConfidenceFields: payload.low_confidence_fields ?? [],
294
+ });
295
+ const toCardPolicyInitialData = (payload) => {
296
+ if (payload.mode === 'upload') {
297
+ return {
298
+ policyKind: 'upload',
299
+ wizardPlan: payload.wizard_plan != null
300
+ ? toCardPolicyWizardPlan(payload.wizard_plan)
301
+ : undefined,
302
+ source: payload.source != null
303
+ ? toCardPolicyUploadSource(payload.source)
304
+ : undefined,
305
+ };
306
+ }
307
+ return {
308
+ policyKind: payload.mode,
309
+ wizardPlan: toCardPolicyWizardPlan(payload.wizard_plan),
310
+ };
311
+ };
148
312
  const toAiCfoVisualizationData = (data) => {
149
313
  if ('x' in data && 'y' in data) {
150
314
  // Normalize y to always be an array
@@ -187,7 +351,7 @@ const toAiCfoVisualizationData = (data) => {
187
351
  };
188
352
  };
189
353
  const toResponseBlockType = (answer, userId) => {
190
- const { metadata, state, type, text, visualization, table, follow_up_questions, assumptions, insights, summarized_title, artifact, artifact_title, } = answer;
354
+ const { metadata, state, type, text, visualization, table, follow_up_questions, assumptions, insights, summarized_title, artifact, artifact_title, artifact_host_url, } = answer;
191
355
  const { chat_session_id, message_id, timestamp, chain_of_thought_action_steps: chainOfThoughtActionSteps = [], } = metadata;
192
356
  return {
193
357
  messageId: message_id,
@@ -207,6 +371,7 @@ const toResponseBlockType = (answer, userId) => {
207
371
  chainOfThoughtActionSteps,
208
372
  artifact: artifact ?? undefined,
209
373
  artifactTitle: artifact_title ?? undefined,
374
+ artifactHostUrl: artifact_host_url ?? undefined,
210
375
  },
211
376
  createdAt: (0, zeniDayJS_1.date)(timestamp),
212
377
  };
@@ -378,10 +543,8 @@ const aiCfo = (0, toolkit_1.createSlice)({
378
543
  // Update state - append new complete Q&As to existing ones
379
544
  session.questionAnswers = mergeQuestionAnswerPairs(session.questionAnswers, completeQAs);
380
545
  },
381
- /**
382
- * Upsert a Q/A pair: if the questionAnswerId exists, upsert the response block; if not, add a new Q/A entry.
383
- * Used for push notification payloads that may introduce a new question.
384
- */
546
+ // Upserts the response block when `questionAnswerId` exists; otherwise adds the Q/A
547
+ // entry. Used for push notification payloads that may introduce a new question.
385
548
  upsertOrAddQuestionAnswerPayload(draft, action) {
386
549
  const { chatSessionId, questionAnswerId, question: { questionId, createdAt, text }, answerPayload, userId, insertQuestionAnswer, } = action.payload;
387
550
  const session = draft.aiCfoByChatSessionId[chatSessionId];
@@ -458,10 +621,82 @@ const aiCfo = (0, toolkit_1.createSlice)({
458
621
  session.questionAnswers.push(qa);
459
622
  }
460
623
  },
624
+ // Patches an upload-mode card-policy answer with the wizard plan + source returned
625
+ // by `policy-recommendation-from-upload`. No-op for non-upload / missing targets.
626
+ updateAiCfoAnswerCardPolicyWizardPlan(draft, action) {
627
+ const { answerId, chatSessionId, source, wizardPlan } = action.payload;
628
+ const session = draft.aiCfoByChatSessionId[chatSessionId];
629
+ if (session == null) {
630
+ return;
631
+ }
632
+ const qa = session.questionAnswers.find((entry) => entry.questionAnswerId === answerId);
633
+ if (qa == null) {
634
+ return;
635
+ }
636
+ for (const response of Object.values(qa.responses)) {
637
+ const visualization = response?.content.visualization;
638
+ if (visualization == null ||
639
+ visualization.type !== 'interactive_form') {
640
+ continue;
641
+ }
642
+ const data = visualization.data;
643
+ if (data.formType !== 'card_policy' ||
644
+ data.payload.policyKind !== 'upload') {
645
+ continue;
646
+ }
647
+ data.payload = {
648
+ ...data.payload,
649
+ wizardPlan,
650
+ source: source ?? data.payload.source,
651
+ };
652
+ }
653
+ },
654
+ // Renders a "Creating…" placeholder while the cards/policy create mutation runs.
655
+ // Caller supplies a stable `id` (updated in place by `updateSyntheticAiCfoAnswer`).
656
+ appendSyntheticAiCfoAnswer(draft, action) {
657
+ const { chatSessionId, id, kind, createdAt, entityIds, sourceQuestionAnswerId, } = action.payload;
658
+ if (draft.syntheticAnswersByChatSessionId[chatSessionId] == null) {
659
+ draft.syntheticAnswersByChatSessionId[chatSessionId] = [];
660
+ }
661
+ draft.syntheticAnswersByChatSessionId[chatSessionId].push({
662
+ id,
663
+ kind,
664
+ entityIds: entityIds ?? [],
665
+ createdAt,
666
+ sourceQuestionAnswerId,
667
+ });
668
+ },
669
+ // Transitions a bubble from `creating_*` to `created_*` once the mutation completes.
670
+ updateSyntheticAiCfoAnswer(draft, action) {
671
+ const { chatSessionId, id, kind, entityIds } = action.payload;
672
+ const list = draft.syntheticAnswersByChatSessionId[chatSessionId];
673
+ if (list == null) {
674
+ return;
675
+ }
676
+ const entry = list.find((item) => item.id === id);
677
+ if (entry == null) {
678
+ return;
679
+ }
680
+ entry.kind = kind;
681
+ if (entityIds != null) {
682
+ entry.entityIds = entityIds;
683
+ }
684
+ },
685
+ removeSyntheticAiCfoAnswer(draft, action) {
686
+ const { chatSessionId, id } = action.payload;
687
+ const list = draft.syntheticAnswersByChatSessionId[chatSessionId];
688
+ if (list == null) {
689
+ return;
690
+ }
691
+ draft.syntheticAnswersByChatSessionId[chatSessionId] = list.filter((item) => item.id !== id);
692
+ },
693
+ clearSyntheticAiCfoAnswers(draft, action) {
694
+ delete draft.syntheticAnswersByChatSessionId[action.payload];
695
+ },
461
696
  clearSession(draft, action) {
462
697
  const sessionId = action.payload;
463
698
  delete draft.aiCfoByChatSessionId[sessionId];
464
- // Clear partial Q&A if it belongs to the cleared session
699
+ delete draft.syntheticAnswersByChatSessionId[sessionId];
465
700
  if (draft.partialQuestionAnswers?.[sessionId] != null) {
466
701
  draft.partialQuestionAnswers[sessionId] = undefined;
467
702
  }
@@ -469,6 +704,7 @@ const aiCfo = (0, toolkit_1.createSlice)({
469
704
  clearAiCfo(draft) {
470
705
  draft.aiCfoByChatSessionId = {};
471
706
  draft.partialQuestionAnswers = {};
707
+ draft.syntheticAnswersByChatSessionId = {};
472
708
  },
473
709
  deleteQuestion(draft, action) {
474
710
  const { chatSessionId, questionAnswerId } = action.payload;
@@ -481,6 +717,12 @@ const aiCfo = (0, toolkit_1.createSlice)({
481
717
  if (idx !== -1) {
482
718
  session.questionAnswers.splice(idx, 1);
483
719
  }
720
+ // Drop synthetic bubbles whose sourceQuestionAnswerId is the deleted Q/A; otherwise "Creating…" / "Created" tiles outlive their Q/A.
721
+ const syntheticAnswers = draft.syntheticAnswersByChatSessionId[chatSessionId];
722
+ if (syntheticAnswers != null) {
723
+ draft.syntheticAnswersByChatSessionId[chatSessionId] =
724
+ syntheticAnswers.filter((answer) => answer.sourceQuestionAnswerId !== questionAnswerId);
725
+ }
484
726
  },
485
727
  },
486
728
  });
@@ -493,5 +735,5 @@ const toChatSession = (chatSessionPayload) => {
493
735
  createdAt: (0, zeniDayJS_1.date)(created_at),
494
736
  };
495
737
  };
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;
738
+ _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
739
  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 { allSessionsWithOrderedQuestionAnswers };
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
  }