@zeniai/client-epic-state 5.3.17 → 5.3.18-betaAK2

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 (45) hide show
  1. package/lib/entity/tenant/epic/fetchAllTenantsEpic.d.ts +2 -4
  2. package/lib/entity/tenant/epic/fetchAllTenantsEpic.js +45 -42
  3. package/lib/entity/tenant/tenantPayload.d.ts +17 -1
  4. package/lib/entity/tenant/tenantReducer.d.ts +7 -2
  5. package/lib/entity/tenant/tenantReducer.js +48 -19
  6. package/lib/entity/tenant/tenantSelector.d.ts +26 -6
  7. package/lib/entity/tenant/tenantSelector.js +119 -96
  8. package/lib/entity/tenant/tenantState.d.ts +10 -0
  9. package/lib/epic.d.ts +2 -1
  10. package/lib/epic.js +2 -0
  11. package/lib/esm/entity/tenant/epic/fetchAllTenantsEpic.js +49 -46
  12. package/lib/esm/entity/tenant/tenantReducer.js +46 -17
  13. package/lib/esm/entity/tenant/tenantSelector.js +115 -95
  14. package/lib/esm/epic.js +2 -0
  15. package/lib/esm/index.js +7 -7
  16. package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +65 -3
  17. package/lib/esm/view/aiCfoView/aiCfoViewSelector.js +25 -0
  18. package/lib/esm/view/aiCfoView/epics/transcribeAudioEpic.js +60 -0
  19. package/lib/esm/view/dashboard/dashboardEpic.js +0 -4
  20. package/lib/esm/view/dashboard/dashboardSelector.js +2 -3
  21. package/lib/esm/view/financeStatement/financeStatementEpic.js +1 -5
  22. package/lib/esm/view/people/peoplePageEpic.js +0 -4
  23. package/lib/esm/view/transactionDetail/createTransaction/createTransactionPayload.js +19 -3
  24. package/lib/esm/view/transactionDetail/createTransaction/createTransactionState.js +2 -0
  25. package/lib/index.d.ts +8 -8
  26. package/lib/index.js +56 -46
  27. package/lib/view/aiCfoView/aiCfoViewPayload.d.ts +20 -0
  28. package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +2 -2
  29. package/lib/view/aiCfoView/aiCfoViewReducer.js +66 -4
  30. package/lib/view/aiCfoView/aiCfoViewSelector.d.ts +8 -1
  31. package/lib/view/aiCfoView/aiCfoViewSelector.js +27 -0
  32. package/lib/view/aiCfoView/aiCfoViewState.d.ts +9 -0
  33. package/lib/view/aiCfoView/epics/transcribeAudioEpic.d.ts +19 -0
  34. package/lib/view/aiCfoView/epics/transcribeAudioEpic.js +64 -0
  35. package/lib/view/dashboard/dashboardEpic.js +0 -4
  36. package/lib/view/dashboard/dashboardSelector.d.ts +0 -2
  37. package/lib/view/dashboard/dashboardSelector.js +1 -2
  38. package/lib/view/financeStatement/financeStatementEpic.js +1 -5
  39. package/lib/view/people/peoplePageEpic.js +0 -4
  40. package/lib/view/transactionDetail/createTransaction/createTransactionPayload.d.ts +6 -3
  41. package/lib/view/transactionDetail/createTransaction/createTransactionPayload.js +19 -3
  42. package/lib/view/transactionDetail/createTransaction/createTransactionState.d.ts +7 -2
  43. package/lib/view/transactionDetail/createTransaction/createTransactionState.js +2 -0
  44. package/lib/view/transactionDetail/transactionDetailReducer.d.ts +20 -20
  45. package/package.json +1 -1
@@ -0,0 +1,60 @@
1
+ import { of } from 'rxjs';
2
+ import { catchError, filter, finalize, map, switchMap, takeUntil, timeout, } from 'rxjs/operators';
3
+ import { createZeniAPIStatus, isSuccessResponse, } from '../../../responsePayload';
4
+ import { clearAll } from '../../../rootActions';
5
+ import { transcribeAudio, transcribeAudioFailure, transcribeAudioSuccess, } from '../aiCfoViewReducer';
6
+ const AUDIO_FIELD = 'audio';
7
+ const LANGUAGE_FIELD = 'language';
8
+ /** Extension only has to match the recorded format; the server reads the part's MIME type. */
9
+ const AUDIO_FILE_NAME = 'dictation.wav';
10
+ /**
11
+ * A hung request would otherwise pin `isTranscribing` true forever, and the composer
12
+ * gates both submit and the mic on it — leaving the user unable to send even typed
13
+ * text until something else resolved it.
14
+ */
15
+ const TRANSCRIPTION_TIMEOUT_MS = 30000;
16
+ /**
17
+ * Voice dictation for the AI CFO composer. Dispatch `transcribeAudio(blob, language)` with a
18
+ * finished recording to POST it to the AI CFO micro-service `/1.0/transcriptions` endpoint;
19
+ * on success the transcript is appended to the composer input for the user to edit and send.
20
+ *
21
+ * `switchMap` (not `mergeMap`): a newer recording supersedes an older in-flight one, so a
22
+ * slow response can never append a stale transcript after a fresh one has already landed.
23
+ * The AbortController makes that cancellation real — `fetch` wrapped in a promise ignores
24
+ * an RxJS unsubscribe, so without the signal the superseded request would run to completion
25
+ * and still bill a transcription call whose result nothing wants.
26
+ */
27
+ export const transcribeAudioEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(transcribeAudio.match), switchMap((action) => {
28
+ const { audio, chatSessionId, language } = action.payload;
29
+ const abortController = new AbortController();
30
+ const formData = new FormData();
31
+ formData.append(AUDIO_FIELD, audio, AUDIO_FILE_NAME);
32
+ if (language != null && language !== '') {
33
+ formData.append(LANGUAGE_FIELD, language);
34
+ }
35
+ return zeniAPI
36
+ .postFormData(`${zeniAPI.apiEndPoints.aiCfoMicroServiceBaseUrl}/1.0/transcriptions`, formData, abortController.signal)
37
+ .pipe(timeout(TRANSCRIPTION_TIMEOUT_MS),
38
+ // A tenant switch clears the store; a transcript still in flight must not
39
+ // land in the next tenant's composer (both sessions can be `undefined`, so
40
+ // the reducer's session guard would let it through).
41
+ takeUntil(actions$.pipe(filter(clearAll.match))), map((response) => {
42
+ if (!isSuccessResponse(response)) {
43
+ return transcribeAudioFailure(response.status);
44
+ }
45
+ // An EMPTY transcript is a success (the mic caught silence) and the
46
+ // reducer leaves the composer alone. A MISSING one breaks the response
47
+ // contract, so it surfaces as an error rather than being coerced to
48
+ // silence the user cannot distinguish from a quiet room.
49
+ if (response.data?.transcript == null) {
50
+ return transcribeAudioFailure(createZeniAPIStatus('Transcription succeeded but the response carried no transcript', 'Unexpected Error'));
51
+ }
52
+ // The session id rides along so a transcript that lands after the user
53
+ // switched sessions is dropped rather than misfiled.
54
+ return transcribeAudioSuccess(response.data.transcript, chatSessionId);
55
+ }), finalize(() => abortController.abort()), catchError((error) => of(transcribeAudioFailure(createZeniAPIStatus(
56
+ // message (detailed) first, then the short title — per createZeniAPIStatus(message, title).
57
+ // JSON.stringify(Error) drops the (non-enumerable) message — extract it explicitly.
58
+ 'Transcription REST API call errored out: ' +
59
+ (error instanceof Error ? error.message : String(error)), 'Unexpected Error')))));
60
+ }));
@@ -88,10 +88,6 @@ export const fetchDashboardEpic = (actions$, state$) => actions$.pipe(filter(fet
88
88
  const revenueState = getRevenueReportFetchState(state.revenueState.uiState.selectedForecast?.id, state.revenueState);
89
89
  const opExState = getOperatingExpensesReportFetchState(state.opExState.uiState.selectedForecast?.id, state.opExState);
90
90
  const netBurnOrIncomeReportFetchState = getNetBurnOrIncomeReportFetchState(state.netBurnOrIncomeState.uiState.selectedForecast?.id, state.netBurnOrIncomeState);
91
- if (state.tenantState.fetchState !== 'In-Progress' &&
92
- !state.tenantState.hasValidState()) {
93
- fetchActions.push(fetchAllTenants(userId));
94
- }
95
91
  if (state.cardBalanceState.fetchState !== 'In-Progress' &&
96
92
  !state.cardBalanceState.hasValidState()) {
97
93
  fetchActions.push(fetchCardBalance());
@@ -1,7 +1,7 @@
1
1
  import { createSelector } from '@reduxjs/toolkit';
2
2
  import { newBalancesFilter } from '../../commonStateTypes/coaBalance/coaBalancesFilter';
3
3
  import { reduceFetchState } from '../../commonStateTypes/reduceFetchState';
4
- import { getCurrentTenant, getTenantsByCheckInDateSelector, } from '../../entity/tenant/tenantSelector';
4
+ import { getCurrentTenant } from '../../entity/tenant/tenantSelector';
5
5
  import { hasAdminLevelAccess, hasInvestorBankerLevelAccess, } from '../../entity/userRole/userRoleType';
6
6
  import { getApAgingReport } from '../apAgingView/apAgingReport/apAgingSelector';
7
7
  import { getArAgingReport } from '../arAgingView/arAgingReport/arAgingSelector';
@@ -34,8 +34,7 @@ const getCashInCashOutLast4Periods = (state) => getCashInCashOut(state.accountSt
34
34
  const getNetBurnOrIncomeStoryCard = (state) => getNetBurnOrIncomeStoryCardReport(state);
35
35
  const apAgingSelector = (state) => getApAgingReport(state);
36
36
  const arAgingSelector = (state) => getArAgingReport(state);
37
- const tenantSelector = createSelector(getTenantsByCheckInDateSelector, getCurrentTenant, (tenantsOrdered, currentTenant) => ({
38
- tenantsOrdered,
37
+ const tenantSelector = createSelector(getCurrentTenant, (currentTenant) => ({
39
38
  currentTenant,
40
39
  }));
41
40
  export const getDashboard = createSelector(tenantSelector, getCardBalance, getCashBalance, getOperatingExpensesForLast5Periods, getRevenueForLast4Periods, getTop6Expenses, getNetBurnOrIncomeForLast4Periods, getNetBurnOrIncomeStoryCard, getCashPositionLast5Periods, getCashInCashOutLast4Periods, getInsights, getCompanyPassportView, getTasksCardReport, getBillPayCardReport, getReimbursementCardReport, apAgingSelector, arAgingSelector, getRewardsPlanCard, getDashboardCardsOrdered, (state) => {
@@ -15,12 +15,8 @@ export const fetchFinanceStatementEpic = (actions$, state$) => actions$.pipe(fil
15
15
  return of(fetchAllTenants(userId), fetchProfitAndLoss(), fetchBalanceSheet(), fetchCashFlow());
16
16
  }
17
17
  else {
18
- const { tenantState, financeStatementState } = state;
18
+ const { financeStatementState } = state;
19
19
  const fetchActions = [];
20
- if (tenantState.fetchState !== 'In-Progress' &&
21
- !tenantState.hasValidState()) {
22
- fetchActions.push(fetchAllTenants(userId));
23
- }
24
20
  const pandLFetchState = getPandLReportFetchState(undefined, state.profitAndLossState);
25
21
  const balanceSheetFetchState = getBalanceSheetFetchState(state.balanceSheetState);
26
22
  const cashFlowFetchState = getCashFlowReportFetchState(state.cashFlowState);
@@ -10,10 +10,6 @@ export const fetchPeoplePageEpic = (actions$, state$) => actions$.pipe(filter(fe
10
10
  else {
11
11
  const state = state$.value;
12
12
  const fetchActions = [];
13
- if (state.tenantState.fetchState !== 'In-Progress' &&
14
- !state.tenantState.hasValidState()) {
15
- fetchActions.push(fetchAllTenants(userId));
16
- }
17
13
  if (state.peopleState.fetchState != 'In-Progress' &&
18
14
  !state.peopleState.hasValidState()) {
19
15
  fetchActions.push(fetchPeople());
@@ -131,13 +131,29 @@ export const prepareCreateTransactionPayload = (state, localData) => {
131
131
  };
132
132
  }
133
133
  const lines = localData.lines.map((line) => toLinePayload(state, line, transactionType));
134
+ const documentIdField = localData.documentNumber != null && localData.documentNumber !== ''
135
+ ? { document_id: localData.documentNumber }
136
+ : {};
134
137
  if (transactionType === 'journal_entry') {
138
+ return { ...base, ...documentIdField, lines };
139
+ }
140
+ // Both post to accounts payable, so they carry no header account or payment type.
141
+ if (transactionType === 'vendor_credit') {
142
+ return {
143
+ ...base,
144
+ vendor_id: toQboVendorId(state, localData.vendorId),
145
+ ...documentIdField,
146
+ lines,
147
+ };
148
+ }
149
+ if (transactionType === 'bill') {
135
150
  return {
136
151
  ...base,
137
- ...(localData.documentNumber != null &&
138
- localData.documentNumber !== '' && {
139
- document_id: localData.documentNumber,
152
+ vendor_id: toQboVendorId(state, localData.vendorId),
153
+ ...(localData.dueDate != null && {
154
+ due_date: localData.dueDate.format(DEFAULT_DATE_FORMAT),
140
155
  }),
156
+ ...documentIdField,
141
157
  lines,
142
158
  };
143
159
  }
@@ -8,4 +8,6 @@ export const ALL_CREATABLE_TRANSACTION_TYPES = [
8
8
  'credit_card_credit',
9
9
  'transfer',
10
10
  'journal_entry',
11
+ 'bill',
12
+ 'vendor_credit',
11
13
  ];
package/lib/index.d.ts CHANGED
@@ -146,8 +146,8 @@ import { ALL_WEEK_DAYS, DayOfWeek, PriorityCodeType, Task, TaskCodeType, TaskPri
146
146
  import { getTaskGroupById } from './entity/taskGroup/taskGroupSelector';
147
147
  import { TaskGroupState } from './entity/taskGroup/taskGroupState';
148
148
  import { TaskGroupTemplate } from './entity/taskGroupTemplate/taskGroupTemplateState';
149
- import { DoSignInPayload, deleteConnection, doMagicLinkSignIn, doSignIn, doSignOut, fetchActiveTenant, fetchAllTenants, fetchExcludedResources as fetchExcludedResourcesForTenant, fetchExternalConnections as fetchExternalConnectionsForTenant, fetchSubscriptionSummaryForTenant, initEmailConnectOAuth, resendVerifyDeviceOTP, resetSignInState, saveAPIKeyConnection, saveConnectorCredentials, saveExternalConnection as saveExternalConnectionForTenant, saveOAuthConnection, sendEmailMagicLinkToUser, sendSessionHeartbeat, toExternalIntegrationType, updateCurrentTenant, updateSignInState, verifyDeviceWithTwoFA } from './entity/tenant/tenantReducer';
150
- import { CurrentTenant, DEFAULT_RECEIPTS_EMAIL, TenantBaseView, TenantCoreDetailsView, TenantView, TenantsBaseOrdered, TenantsOrdered, getCurrentTenant, getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, getIsAutoReviewIncomeWithoutCustomerEnabled, getReceiptsEmail, getTenantBaseById, getTenantBaseViewForTenantId, getTenantBaseViewForTenantView, getTenantsBaseByCheckInDateSelector, getTenantsByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, isOtherProductsEnabledForTenant, isTenantBankingOnly, isTenantBookkeepingEnabled, isTenantCardsOnly, isTenantUsingZeniCOA, isZeniDomainTenant, toTenantCoreDetailsView } from './entity/tenant/tenantSelector';
149
+ import { DoSignInPayload, deleteConnection, doMagicLinkSignIn, doSignIn, doSignOut, fetchActiveTenant, fetchAllTenants, fetchExcludedResources as fetchExcludedResourcesForTenant, fetchExternalConnections as fetchExternalConnectionsForTenant, fetchSubscriptionSummaryForTenant, initEmailConnectOAuth, resendVerifyDeviceOTP, resetSignInState, saveAPIKeyConnection, saveConnectorCredentials, saveExternalConnection as saveExternalConnectionForTenant, saveOAuthConnection, seedTenantSummary, sendEmailMagicLinkToUser, sendSessionHeartbeat, toExternalIntegrationType, updateCurrentTenant, updateSignInState, verifyDeviceWithTwoFA } from './entity/tenant/tenantReducer';
150
+ import { CurrentTenant, CurrentTenantIds, DEFAULT_RECEIPTS_EMAIL, TenantBaseView, TenantCoreDetailsView, TenantView, TenantsBaseOrdered, getCurrentTenant, getCurrentTenantId, getCurrentTenantIds, getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, getIsAutoReviewIncomeWithoutCustomerEnabled, getReceiptsEmail, getTenantBaseById, getTenantBaseViewForTenantId, getTenantBaseViewForTenantView, getTenantsBaseByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, isCurrentTenantLoaded, isOtherProductsEnabledForTenant, isTenantBankingOnly, isTenantBookkeepingEnabled, isTenantCardsOnly, isTenantLoaded, isTenantUsingZeniCOA, isZeniDomainTenant, toTenantCoreDetailsView } from './entity/tenant/tenantSelector';
151
151
  import { CapitalizableAccount, CapitalizableAccounts, CapitalizableClassificationType, CapitalizableMatchPattern, Connection, LoggedInUser, RoleResource, Tenant, TenantProductSettings } from './entity/tenant/tenantState';
152
152
  import { toExternalSupportedTool } from './entity/tenant/tenantTypes';
153
153
  import { ToastNotificationPayload } from './entity/toastNotification/toastNotificationPayload';
@@ -512,7 +512,7 @@ import { InternationalWireSelectorView, getInternationalWireView } from './view/
512
512
  import { fetchInternationalVerificationForm, submitInternationalVerificationForm, updateVerificationFormLocalData } from './view/spendManagement/billPay/internationalWireVerification/internationalWireVerificationReducer';
513
513
  import { InternationalWireVerificationView, getIntlWireVerificationView } from './view/spendManagement/billPay/internationalWireVerification/internationalWireVerificationSelector';
514
514
  import { FieldValueType, InternationalWireVerificationState, VerificationFormField, VerificationFormLocalData } from './view/spendManagement/billPay/internationalWireVerification/internationalWireVerificationState';
515
- import { fetchBillAttachment, fetchMagicLinkBankNameByRouting, fetchMagicLinkBankNameBySwift, fetchMagicLinkTenant, saveBankAccount, saveMagicLinkAddressInLocalStore, updateMagicLinkBankAccountLocalStoreData, updateMagicLinkInternationalBankAccountLocalStoreData } from './view/spendManagement/billPay/magicLinkView/magicLinkViewReducer';
515
+ import { fetchBillAttachment, fetchMagicLinkBankNameByRouting, fetchMagicLinkBankNameBySwift, fetchMagicLinkTenant, saveBankAccount, saveMagicLinkAddressInLocalStore, updateMagicLinkBankAccountLocalStoreData, updateMagicLinkInternationalBankAccountLocalStoreData, updateMagicLinkTenantFailure, updateMagicLinkTenantSuccess } from './view/spendManagement/billPay/magicLinkView/magicLinkViewReducer';
516
516
  import { MagicLinkView, getMagicLinkBankAccountView, getMagicLinkCurrentAddressState, getMagicLinkView } from './view/spendManagement/billPay/magicLinkView/magicLinkViewSelector';
517
517
  import { PreviousBillsSelectorView } from './view/spendManagement/billPay/previousBills/previousBillsSelector';
518
518
  import { fetchWiseRedirectStatus } from './view/spendManagement/billPay/wiseRedirectView/wiseRedirectReducer';
@@ -754,7 +754,7 @@ export { TimeframeTick, TimeframeTickWithMetaData, toTimeframeTick, mapTimePerio
754
754
  export { VendorSpendTrendFilterTabType, toVendorSpendTrendFilterTabsTypeStrict, } from './entity/vendorExpense/vendorSpendTrendFilterTabType';
755
755
  export { getNumberOfPeriods };
756
756
  export { SCHEDULE_DAYS_OF_MONTH, ScheduleDaysOfMonth, toScheduleDaysOfMonth, Day, Month, toMonth, toMonthStrict, Quarter, toQuarter, toQuarterStrict, AbsoluteDay, TimePeriod, };
757
- export { CapitalizableAccount, CapitalizableAccounts, CapitalizableClassificationType, CapitalizableMatchPattern, Tenant, TenantView, LoggedInUser, TenantBaseView, CurrentTenant, TenantProductSettings, getTenantBaseById, getCurrentTenant, getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, getIsAutoReviewIncomeWithoutCustomerEnabled, getTenantsByCheckInDateSelector, getTenantsBaseByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, toTenantCoreDetailsView, getTenantBaseViewForTenantView, getTenantBaseViewForTenantId, isZeniDomainTenant, isTenantUsingZeniCOA, TenantsBaseOrdered, TenantsOrdered, TenantCoreDetailsView, fetchActiveTenant, fetchAllTenants, updateCurrentTenant, clearAll, doMagicLinkSignIn, verifyDeviceWithTwoFA, resendVerifyDeviceOTP, sendEmailMagicLinkToUser, doSignIn, updateSignInState, DoSignInPayload, doSignOut, sendSessionHeartbeat, resetSignInState, RoleResource, Connection, fetchExcludedResourcesForTenant, fetchExternalConnectionsForTenant, saveExternalConnectionForTenant, deleteConnection, saveAPIKeyConnection, saveConnectorCredentials, saveOAuthConnection, initEmailConnectOAuth, toExternalIntegrationType, toExternalSupportedTool, fetchSubscriptionSummaryForTenant, isTenantBankingOnly, isTenantCardsOnly, isTenantBookkeepingEnabled, isOtherProductsEnabledForTenant, DEFAULT_RECEIPTS_EMAIL, getReceiptsEmail, };
757
+ export { CapitalizableAccount, CapitalizableAccounts, CapitalizableClassificationType, CapitalizableMatchPattern, Tenant, TenantView, LoggedInUser, TenantBaseView, CurrentTenant, CurrentTenantIds, TenantProductSettings, getTenantBaseById, getCurrentTenant, getCurrentTenantId, getCurrentTenantIds, isCurrentTenantLoaded, isTenantLoaded, getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, getIsAutoReviewIncomeWithoutCustomerEnabled, getTenantsBaseByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, toTenantCoreDetailsView, getTenantBaseViewForTenantView, getTenantBaseViewForTenantId, isZeniDomainTenant, isTenantUsingZeniCOA, TenantsBaseOrdered, TenantCoreDetailsView, fetchActiveTenant, fetchAllTenants, seedTenantSummary, updateCurrentTenant, clearAll, doMagicLinkSignIn, verifyDeviceWithTwoFA, resendVerifyDeviceOTP, sendEmailMagicLinkToUser, doSignIn, updateSignInState, DoSignInPayload, doSignOut, sendSessionHeartbeat, resetSignInState, RoleResource, Connection, fetchExcludedResourcesForTenant, fetchExternalConnectionsForTenant, saveExternalConnectionForTenant, deleteConnection, saveAPIKeyConnection, saveConnectorCredentials, saveOAuthConnection, initEmailConnectOAuth, toExternalIntegrationType, toExternalSupportedTool, fetchSubscriptionSummaryForTenant, isTenantBankingOnly, isTenantCardsOnly, isTenantBookkeepingEnabled, isOtherProductsEnabledForTenant, DEFAULT_RECEIPTS_EMAIL, getReceiptsEmail, };
758
758
  export { Account, AccountType, AccountBase, StatementCloseDay, toAccountType, AccountReport, NestedAccountReport, AccountWithBalanceReport, AccountGroup, AccountGroupReportV2, AccountGroupType, toAccountGroupType, AccountGroupReport, getAccountGroupKey, AccountGroupKey, RecommendedAccountBase, AccountFilterOption, getAllAccounts, getTransactionFilterAccountOptions, };
759
759
  export { Class, ClassBase, RecommendedClassBase, } from './entity/class/classState';
760
760
  export { ClassFilterOption, getAllClasses, getClassById, getClassFilterOptions, } from './entity/class/classSelector';
@@ -952,7 +952,7 @@ export { isZeniClearingAccountReport, ZENI_CLEARING_ACCOUNT, isZeniClearingAccou
952
952
  export { fetchOnboardingCustomerView, fetchOnboardingCustomerSetupView, getOnboardingPlaidLinkToken, establishOnboardingPlaidConnection, updateOnboardingCustomerViewAccountDetails, updateOnboardingCustomerViewCompleteStatus, updateOnboardingCustomerViewDashboardLoaded, updateOnboardingPaymentAccountLoginStatus, updateOnboardingPaymentAccountStatus, updateOnboardingCustomerView, updateOnboardingCustomerViewLocalStoreData, updateCurrentStep, updateCurrentSubStep, updateOnboardingCustomerViewUIState, saveOnboardingCompnayOfficerPhoneInLocalStore, saveOnboardingCustomerViewDataInLocalStore, clearOnboardingCustomerViewDataInLocalStore, applyKycDocumentAutofillForOnboarding, applyKybDocumentAutofillForOnboarding, clearKycKybAutofillForOnboarding, acknowledgeOnboardingAiActivationViewed, acknowledgeOnboardingAiFinanceTeam, fetchAiAgentsActivationStatus, aiAgentsActivationCountsUpdated, aiAgentsActivationPhaseChanged, getAiAgentsActivationCounts, getAiAgentsActivationPhases, getAiAgentsActivationSubview, getOnboardingCustomerView, getProductSettingsString, OnboardingCustomerView, OnboardingStep, OnboardingSubStep, ALL_ONBOARDING_STEPS, ALL_ONBOARDING_SUB_STEPS, toOnboardingStepType, toOnboardingSubStepType, OnboardingCustomerViewUIState, OnboardingCustomerViewLocalData, OnboardingBusinessProfileUpdate, AiAgentsActivationCounts, AiAgentsActivationPhase, AiAgentsActivationPhaseStatus, AiAgentsActivationSubview, };
953
953
  export { saveAccountMapping, saveAccountMappingLocalData, clearAccountMappingLocalData, AccountMappingLocalData, AccountMappingView, VendorAccountMappingView, getAccountMappingView, initializeAccountMappingView, ExpenseCategory1099Filing, };
954
954
  export { MagicLinkView, getMagicLinkView, getMagicLinkBankAccountView, getMagicLinkCurrentAddressState, };
955
- export { fetchMagicLinkTenant, fetchBillAttachment, saveBankAccount, updateMagicLinkBankAccountLocalStoreData, updateMagicLinkInternationalBankAccountLocalStoreData, fetchMagicLinkBankNameByRouting, fetchMagicLinkBankNameBySwift, saveMagicLinkAddressInLocalStore, };
955
+ export { fetchMagicLinkTenant, updateMagicLinkTenantSuccess, updateMagicLinkTenantFailure, fetchBillAttachment, saveBankAccount, updateMagicLinkBankAccountLocalStoreData, updateMagicLinkInternationalBankAccountLocalStoreData, fetchMagicLinkBankNameByRouting, fetchMagicLinkBankNameBySwift, saveMagicLinkAddressInLocalStore, };
956
956
  export { getWiseRedirect, fetchWiseRedirectStatus };
957
957
  export { getInternationalWireView, InternationalWireSelectorView, DynamicFormField, CreateInternationalWireDetailsLocalData, SupportedAccountType, VendorCurrency, initializeInternationalWireLocalData, updateInternationalWireLocalStoreData, initializeDynamicForm, fetchInternationalWireDynamicForm, createPaymentInstrument, createPaymentInstrumentUpdateStatus, deletePaymentInstrument, clearInternationalWire, };
958
958
  export { fetchUserRoleConfig, getUserRoleConfig };
@@ -1002,12 +1002,12 @@ export { AiAccountantCustomerViewState, AiAccountantSortKey, AiAccountantUIState
1002
1002
  export { AiAccountantFilterCategoryField } from './view/companyView/types/cockpitTypes';
1003
1003
  export { cancelAiAccountantOnboarding, fetchAiAccountantCustomers, fetchAiAccountantJobs, setSelectedTenantIdsForJobTrigger, triggerAiAccountantJob, updateAiAccountantUIState, } from './view/aiAccountantView/aiAccountantViewReducer';
1004
1004
  export { AiAccountantCockpitView, getAiAccountantCockpitView, } from './view/aiAccountantView/aiAccountantViewSelector';
1005
- export { acceptMasterTOS, applyAiCfoSidePanelHostPageTransition, clearAiCfoSidePanelHostPageContext, clearCurrentSessionId, clearDeleteChatSessionStatus, clearLastContextMessage, clearSkillDetail, clearSkillMutation, closeRoutineRuns, closeRoutinesBrowser, closeSkillsBrowser, createSession, createSessionAndSubmit, deleteChatSession, deleteRoutine, deleteSkill, fetchChatHistory, fetchChatSessionsForUser, fetchRoutineRuns, fetchRoutines, fetchSkillDetail, fetchSkills, fetchSkillsFailure, fetchSkillsSuccess, fetchSkillVersionBody, fetchSkillVersions, fetchSuggestedQuestions, fetchSuggestedQuestionsFailure, fetchSuggestedQuestionsSuccess, openRoutinesBrowser, openSkillsBrowser, runRoutine, saveRoutine, saveSkill, setRoutineEnabled, setSession, setSkillVisibility, stopSubmit, stopSubmitQuestion, submitFeedback, submitQuestion, updateAiCfoViewScrollPosition, updateCotCollapsedState, updateCurrentInput, updateResponseState, } from './view/aiCfoView/aiCfoViewReducer';
1005
+ export { acceptMasterTOS, applyAiCfoSidePanelHostPageTransition, clearAiCfoSidePanelHostPageContext, clearCurrentSessionId, clearDeleteChatSessionStatus, clearLastContextMessage, clearSkillDetail, clearSkillMutation, closeRoutineRuns, closeRoutinesBrowser, closeSkillsBrowser, createSession, createSessionAndSubmit, deleteChatSession, deleteRoutine, deleteSkill, fetchChatHistory, fetchChatSessionsForUser, fetchRoutineRuns, fetchRoutines, fetchSkillDetail, fetchSkills, fetchSkillsFailure, fetchSkillsSuccess, fetchSkillVersionBody, fetchSkillVersions, fetchSuggestedQuestions, fetchSuggestedQuestionsFailure, fetchSuggestedQuestionsSuccess, openRoutinesBrowser, openSkillsBrowser, runRoutine, saveRoutine, saveSkill, setRoutineEnabled, setSession, setSkillVisibility, stopSubmit, stopSubmitQuestion, submitFeedback, submitQuestion, transcribeAudio, updateAiCfoViewScrollPosition, updateCotCollapsedState, updateCurrentInput, updateResponseState, } from './view/aiCfoView/aiCfoViewReducer';
1006
1006
  export { AiCfoViewState, AiCfoViewUIState, Routine, RoutineDraft, RoutineMutationState, RoutineRecurrence, RoutineRun, RoutineRunsState, RoutineRunStatus, RoutinesState, RoutineStatus, Skill, SkillDetail, SkillDetailState, SkillDraft, SkillMutationState, SkillsState, SkillVersion, SkillVersionBodyState, SkillVersionsState, SkillVisibility, SuggestedQuestionsForPageContext, } from './view/aiCfoView/aiCfoViewState';
1007
1007
  export { FetchSuggestedQuestionsResponse, SuggestedQuestionsDataPayload, FetchSkillsResponse, SkillSummaryPayload, SkillListDataPayload, } from './view/aiCfoView/aiCfoViewPayload';
1008
- export type { FeedbackType, SubmitFeedbackPayload, } from './view/aiCfoView/aiCfoViewPayload';
1008
+ export type { FeedbackType, SubmitFeedbackPayload, TranscribeAudioPayload, TranscriptionResponseData, } from './view/aiCfoView/aiCfoViewPayload';
1009
1009
  export type { AiCfoSuggestedQuestionsPageContext } from './common/aiCfo/aiCfoSuggestedQuestionsPageContext';
1010
- export { AiCfoViewSelector, canCreateRoutine, getAiCfoView, getRoutineMutation, getRoutineRuns, getRoutines, getRoutinesEnabled, getSkillDetail, getSkillMutation, getSkills, getSkillsEnabled, getSkillVersionBody, getSkillVersions, getSuggestedQuestionsForPageContext, } from './view/aiCfoView/aiCfoViewSelector';
1010
+ export { AiCfoViewSelector, canCreateRoutine, getAiCfoView, getIsTranscribing, getRoutineMutation, getRoutineRuns, getRoutines, getRoutinesEnabled, getSkillDetail, getSkillMutation, getSkills, getSkillsEnabled, getSkillVersionBody, getSkillVersions, getSuggestedQuestionsForPageContext, getTranscriptionFailed, } from './view/aiCfoView/aiCfoViewSelector';
1011
1011
  export { MessagePayload, ChatSessionPayload, AiCfoAnswerPayload, } from './entity/aiCfo/aiCfoPayload';
1012
1012
  export { setNewSession, setSessions, updateAiCfoAnswerCardPolicyWizardPlan, upsertAnswerPayload, upsertOrAddQuestionAnswerPayload, addQuestionPayload, clearSession, toAiCfoExports, toAiCfoVisualization, appendSyntheticAiCfoAnswer, updateSyntheticAiCfoAnswer, removeSyntheticAiCfoAnswer, } from './entity/aiCfo/aiCfoReducer';
1013
1013
  export { AiCfoSelectorView, getAllQuestionAnswersForChatSession, getQuestionAnswerByIdForChatSession, getAllQuestionsForChatSession, getAiCfoSelectorView, getSyntheticAiCfoAnswersForChatSession, getSyntheticAiCfoAnswerByQuestionAnswerId, ChatSessionWithOrderedQuestionAnswers, } from './entity/aiCfo/aiCfoSelector';