@zeniai/client-epic-state 5.1.86-beta2UT → 5.1.87

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 (30) hide show
  1. package/lib/entity/aiCfo/aiCfoPayload.d.ts +7 -0
  2. package/lib/entity/aiCfo/aiCfoReducer.d.ts +3 -2
  3. package/lib/entity/aiCfo/aiCfoReducer.js +25 -2
  4. package/lib/entity/aiCfo/aiCfoState.d.ts +7 -0
  5. package/lib/entity/tenant/tenantPayload.d.ts +0 -1
  6. package/lib/entity/tenant/tenantReducer.js +0 -1
  7. package/lib/entity/tenant/tenantSelector.d.ts +0 -1
  8. package/lib/entity/tenant/tenantSelector.js +0 -12
  9. package/lib/entity/tenant/tenantState.d.ts +0 -1
  10. package/lib/esm/entity/aiCfo/aiCfoReducer.js +23 -1
  11. package/lib/esm/entity/tenant/tenantReducer.js +0 -1
  12. package/lib/esm/entity/tenant/tenantSelector.js +0 -11
  13. package/lib/esm/index.js +3 -3
  14. package/lib/index.d.ts +4 -4
  15. package/lib/index.js +33 -33
  16. package/package.json +1 -1
  17. package/lib/__testHelpers__/apiFailure.json +0 -6
  18. package/lib/entity/vendor/__mocks__/vendorMock.d.ts +0 -7
  19. package/lib/entity/vendor/__mocks__/vendorMock.js +0 -311
  20. package/lib/entity/vendor/__mocks__/vendorStateMocks.d.ts +0 -8
  21. package/lib/entity/vendor/__mocks__/vendorStateMocks.js +0 -415
  22. package/lib/view/accountMappingView/__mocks__/accountMappingSelectorMock.d.ts +0 -11
  23. package/lib/view/accountMappingView/__mocks__/accountMappingSelectorMock.js +0 -4659
  24. package/lib/view/addressView/__mocks__/addressViewMocks.d.ts +0 -35
  25. package/lib/view/addressView/__mocks__/addressViewMocks.js +0 -239
  26. package/lib/view/addressView/__mocks__/json/createAddressResponse.json +0 -23
  27. package/lib/view/addressView/__mocks__/json/createCompanyAddressSuccess.json +0 -258
  28. package/lib/view/addressView/__mocks__/json/createCompanyUserAddressSuccess.json +0 -418
  29. package/lib/view/addressView/__mocks__/json/fetchAddressResponse.json +0 -24
  30. package/lib/view/addressView/__mocks__/json/updateAddressResponse.json +0 -24
@@ -1,3 +1,4 @@
1
+ import { ID } from '../../commonStateTypes/common';
1
2
  import { ZeniAPIResponse } from '../../responsePayload';
2
3
  export interface TableVisualizationPayload {
3
4
  columns: string[];
@@ -101,10 +102,16 @@ export interface AiCfoAnswerPayload {
101
102
  artifact?: string | null;
102
103
  artifact_host_url?: string | null;
103
104
  artifact_title?: string | null;
105
+ exports?: AiCfoExportPayload[] | null;
104
106
  follow_up_questions?: string[];
105
107
  suggested_reply?: string | null;
106
108
  table?: AiCfoVisualizationPayload | null;
107
109
  }
110
+ export interface AiCfoExportPayload {
111
+ export_id: ID;
112
+ name: string;
113
+ size_bytes: number | null;
114
+ }
108
115
  export interface ChatSessionPayload {
109
116
  chat_session_id: string;
110
117
  chat_session_summary: string | null;
@@ -1,10 +1,11 @@
1
1
  import { ID } from '../../commonStateTypes/common';
2
2
  import { ZeniDate } from '../../zeniDayJS';
3
- import { AiCfoAnswerPayload, AiCfoVisualizationPayload, ChatSessionPayload, MessagePayload } from './aiCfoPayload';
4
- import { AiCfoState, AiCfoVisualization, FileAttachmentMetadata, SyntheticAiCfoAnswerKind } from './aiCfoState';
3
+ import { AiCfoAnswerPayload, AiCfoExportPayload, AiCfoVisualizationPayload, ChatSessionPayload, MessagePayload } from './aiCfoPayload';
4
+ import { AiCfoExport, AiCfoState, AiCfoVisualization, FileAttachmentMetadata, SyntheticAiCfoAnswerKind } from './aiCfoState';
5
5
  import type { CardPolicyUploadSource, CardPolicyWizardPlan } from './aiCfoState';
6
6
  export declare const initialAiCfoState: AiCfoState;
7
7
  export declare const toAiCfoVisualization: (visualization: AiCfoVisualizationPayload) => AiCfoVisualization | undefined;
8
+ export declare const toAiCfoExports: (payload: AiCfoExportPayload[] | null | undefined) => AiCfoExport[] | undefined;
8
9
  export declare const setNewSession: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
9
10
  chatSessionId: ID;
10
11
  createdAt: ZeniDate;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
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;
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.toAiCfoExports = exports.toAiCfoVisualization = exports.initialAiCfoState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  const rootActions_1 = require("../../rootActions");
7
7
  const zeniDayJS_1 = require("../../zeniDayJS");
@@ -121,6 +121,7 @@ function chatHistoryToQA(history) {
121
121
  artifact: parsedAgentMessage.artifact ?? undefined,
122
122
  artifactTitle: parsedAgentMessage.artifact_title ?? undefined,
123
123
  artifactHostUrl: parsedAgentMessage.artifact_host_url ?? undefined,
124
+ exports: (0, exports.toAiCfoExports)(parsedAgentMessage.exports),
124
125
  },
125
126
  createdAt: (0, zeniDayJS_1.date)(agentMessage.created_at),
126
127
  };
@@ -311,6 +312,27 @@ const toCardPolicyInitialData = (payload) => {
311
312
  wizardPlan: toCardPolicyWizardPlan(payload.wizard_plan),
312
313
  };
313
314
  };
315
+ // Drops entries missing id or name (broken download path); returns undefined, not [], so the field stays absent.
316
+ const toAiCfoExports = (payload) => {
317
+ if (!Array.isArray(payload)) {
318
+ return undefined;
319
+ }
320
+ const mapped = payload.flatMap((entry) => {
321
+ // Falsy, not `== null`: an empty string would reach the UI as a blank, failing button.
322
+ if (!entry?.export_id || !entry?.name) {
323
+ return [];
324
+ }
325
+ return [
326
+ {
327
+ exportId: entry.export_id,
328
+ name: entry.name,
329
+ sizeBytes: entry.size_bytes ?? undefined,
330
+ },
331
+ ];
332
+ });
333
+ return mapped.length > 0 ? mapped : undefined;
334
+ };
335
+ exports.toAiCfoExports = toAiCfoExports;
314
336
  const toAiCfoVisualizationData = (data) => {
315
337
  if ('x' in data && 'y' in data) {
316
338
  // Normalize y to always be an array
@@ -353,7 +375,7 @@ const toAiCfoVisualizationData = (data) => {
353
375
  };
354
376
  };
355
377
  const toResponseBlockType = (answer, userId) => {
356
- const { metadata, state, type, text, visualization, table, follow_up_questions, suggested_reply, assumptions, insights, summarized_title, artifact, artifact_title, artifact_host_url, } = answer;
378
+ const { metadata, state, type, text, visualization, table, follow_up_questions, suggested_reply, assumptions, insights, summarized_title, artifact, artifact_title, artifact_host_url, exports, } = answer;
357
379
  const { chat_session_id, message_id, timestamp, chain_of_thought_action_steps: chainOfThoughtActionSteps = [], } = metadata;
358
380
  return {
359
381
  messageId: message_id,
@@ -375,6 +397,7 @@ const toResponseBlockType = (answer, userId) => {
375
397
  artifact: artifact ?? undefined,
376
398
  artifactTitle: artifact_title ?? undefined,
377
399
  artifactHostUrl: artifact_host_url ?? undefined,
400
+ exports: (0, exports.toAiCfoExports)(exports),
378
401
  },
379
402
  createdAt: (0, zeniDayJS_1.date)(timestamp),
380
403
  };
@@ -154,6 +154,12 @@ export interface ResponseBlockBase {
154
154
  state: AiCfoAnswerStateType;
155
155
  userId: ID;
156
156
  }
157
+ /** A downloadable spreadsheet attached to one answer. See AiCfoExportPayload. */
158
+ export interface AiCfoExport {
159
+ exportId: ID;
160
+ name: string;
161
+ sizeBytes?: number;
162
+ }
157
163
  export interface AnswerContentBlockBase {
158
164
  assumptions: string;
159
165
  chainOfThoughtActionSteps: string[];
@@ -163,6 +169,7 @@ export interface AnswerContentBlockBase {
163
169
  artifact?: string;
164
170
  artifactHostUrl?: string;
165
171
  artifactTitle?: string;
172
+ exports?: AiCfoExport[];
166
173
  suggestedReply?: string;
167
174
  summarizedTitle?: string;
168
175
  table?: AiCfoVisualization;
@@ -96,7 +96,6 @@ interface TenantPayload {
96
96
  capitalization_onboarding_shown_for_fixed_asset?: boolean;
97
97
  capitalization_onboarding_shown_for_prepaid?: boolean;
98
98
  master_tos_info?: MasterTOSInfoPayload;
99
- receipts_email?: string | null;
100
99
  reimbursement_info?: UserReimbursementInfoDataPayload;
101
100
  zeni_book_close_date?: string;
102
101
  zeni_book_close_month_and_year?: string;
@@ -1025,7 +1025,6 @@ function mapTenantPayloadToTenant(payload, userTenantPayload) {
1025
1025
  masterTOSInfo: payload.master_tos_info != null
1026
1026
  ? (0, userRolePayload_1.toMasterTOSInfo)(payload.master_tos_info)
1027
1027
  : undefined,
1028
- receiptsEmail: payload.receipts_email ?? undefined,
1029
1028
  rewardsLastViewedTime: userTenantPayload?.rewards_feature_last_viewed_time != null
1030
1029
  ? (0, zeniDayJS_1.date)(userTenantPayload.rewards_feature_last_viewed_time)
1031
1030
  : undefined,
@@ -92,5 +92,4 @@ export declare const getIsAccountingProjectsEnabled: (state: RootState) => boole
92
92
  export declare const isTenantBookkeepingEnabled: (tenant: Tenant | undefined) => boolean;
93
93
  export declare const isOtherProductsEnabledForTenant: (tenant: Tenant | undefined) => boolean;
94
94
  export declare const isTenantTreasuryEnabled: (tenant: Tenant | undefined) => boolean;
95
- export declare function getReceiptsEmail(tenantState: TenantState, tenantId: ID | undefined): string;
96
95
  export {};
@@ -7,7 +7,6 @@ exports.isTenantTreasuryEnabled = exports.isOtherProductsEnabledForTenant = expo
7
7
  exports.getTenant = getTenant;
8
8
  exports.getTenantIdByCompanyId = getTenantIdByCompanyId;
9
9
  exports.getOnboardingTenantByTenantId = getOnboardingTenantByTenantId;
10
- exports.getReceiptsEmail = getReceiptsEmail;
11
10
  const toolkit_1 = require("@reduxjs/toolkit");
12
11
  const orderBy_1 = __importDefault(require("lodash/orderBy"));
13
12
  const companySelector_1 = require("../company/companySelector");
@@ -331,14 +330,3 @@ const isTenantTreasuryEnabled = (tenant) => {
331
330
  : false;
332
331
  };
333
332
  exports.isTenantTreasuryEnabled = isTenantTreasuryEnabled;
334
- const DEFAULT_RECEIPTS_EMAIL = 'receipts@zeni.ai';
335
- function getReceiptsEmail(tenantState, tenantId) {
336
- if (tenantId == null) {
337
- return DEFAULT_RECEIPTS_EMAIL;
338
- }
339
- const tenant = tenantState.tenantsById[tenantId];
340
- if (tenant?.receiptsEmail != null && tenant.receiptsEmail !== '') {
341
- return tenant.receiptsEmail;
342
- }
343
- return DEFAULT_RECEIPTS_EMAIL;
344
- }
@@ -111,7 +111,6 @@ export interface Tenant {
111
111
  bookCloseDate?: ZeniDate;
112
112
  hubSpotId?: ID;
113
113
  masterTOSInfo?: MasterTOSInfo;
114
- receiptsEmail?: string;
115
114
  rewardsLastViewedTime?: ZeniDate;
116
115
  userReimbursementInfo?: UserReimbursementInfo;
117
116
  zeniBookCloseDate?: ZeniDate;
@@ -117,6 +117,7 @@ function chatHistoryToQA(history) {
117
117
  artifact: parsedAgentMessage.artifact ?? undefined,
118
118
  artifactTitle: parsedAgentMessage.artifact_title ?? undefined,
119
119
  artifactHostUrl: parsedAgentMessage.artifact_host_url ?? undefined,
120
+ exports: toAiCfoExports(parsedAgentMessage.exports),
120
121
  },
121
122
  createdAt: zeniDate(agentMessage.created_at),
122
123
  };
@@ -306,6 +307,26 @@ const toCardPolicyInitialData = (payload) => {
306
307
  wizardPlan: toCardPolicyWizardPlan(payload.wizard_plan),
307
308
  };
308
309
  };
310
+ // Drops entries missing id or name (broken download path); returns undefined, not [], so the field stays absent.
311
+ export const toAiCfoExports = (payload) => {
312
+ if (!Array.isArray(payload)) {
313
+ return undefined;
314
+ }
315
+ const mapped = payload.flatMap((entry) => {
316
+ // Falsy, not `== null`: an empty string would reach the UI as a blank, failing button.
317
+ if (!entry?.export_id || !entry?.name) {
318
+ return [];
319
+ }
320
+ return [
321
+ {
322
+ exportId: entry.export_id,
323
+ name: entry.name,
324
+ sizeBytes: entry.size_bytes ?? undefined,
325
+ },
326
+ ];
327
+ });
328
+ return mapped.length > 0 ? mapped : undefined;
329
+ };
309
330
  const toAiCfoVisualizationData = (data) => {
310
331
  if ('x' in data && 'y' in data) {
311
332
  // Normalize y to always be an array
@@ -348,7 +369,7 @@ const toAiCfoVisualizationData = (data) => {
348
369
  };
349
370
  };
350
371
  const toResponseBlockType = (answer, userId) => {
351
- const { metadata, state, type, text, visualization, table, follow_up_questions, suggested_reply, assumptions, insights, summarized_title, artifact, artifact_title, artifact_host_url, } = answer;
372
+ const { metadata, state, type, text, visualization, table, follow_up_questions, suggested_reply, assumptions, insights, summarized_title, artifact, artifact_title, artifact_host_url, exports, } = answer;
352
373
  const { chat_session_id, message_id, timestamp, chain_of_thought_action_steps: chainOfThoughtActionSteps = [], } = metadata;
353
374
  return {
354
375
  messageId: message_id,
@@ -370,6 +391,7 @@ const toResponseBlockType = (answer, userId) => {
370
391
  artifact: artifact ?? undefined,
371
392
  artifactTitle: artifact_title ?? undefined,
372
393
  artifactHostUrl: artifact_host_url ?? undefined,
394
+ exports: toAiCfoExports(exports),
373
395
  },
374
396
  createdAt: zeniDate(timestamp),
375
397
  };
@@ -1013,7 +1013,6 @@ function mapTenantPayloadToTenant(payload, userTenantPayload) {
1013
1013
  masterTOSInfo: payload.master_tos_info != null
1014
1014
  ? toMasterTOSInfo(payload.master_tos_info)
1015
1015
  : undefined,
1016
- receiptsEmail: payload.receipts_email ?? undefined,
1017
1016
  rewardsLastViewedTime: userTenantPayload?.rewards_feature_last_viewed_time != null
1018
1017
  ? date(userTenantPayload.rewards_feature_last_viewed_time)
1019
1018
  : undefined,
@@ -308,14 +308,3 @@ export const isTenantTreasuryEnabled = (tenant) => {
308
308
  ? tenant.productSettings.isTreasuryEnabled === true
309
309
  : false;
310
310
  };
311
- const DEFAULT_RECEIPTS_EMAIL = 'receipts@zeni.ai';
312
- export function getReceiptsEmail(tenantState, tenantId) {
313
- if (tenantId == null) {
314
- return DEFAULT_RECEIPTS_EMAIL;
315
- }
316
- const tenant = tenantState.tenantsById[tenantId];
317
- if (tenant?.receiptsEmail != null && tenant.receiptsEmail !== '') {
318
- return tenant.receiptsEmail;
319
- }
320
- return DEFAULT_RECEIPTS_EMAIL;
321
- }
package/lib/esm/index.js CHANGED
@@ -71,7 +71,7 @@ import { getSnackbar } from './entity/snackbar/snackbarSelector';
71
71
  import { ALL_WEEK_DAYS, toDayOfWeek, toPriorityCodeType, toTaskStatusCodeType, } from './entity/task/taskState';
72
72
  import { getTaskGroupById } from './entity/taskGroup/taskGroupSelector';
73
73
  import { 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, toExternalSupportedTool, updateCurrentTenant, updateSignInState, verifyDeviceWithTwoFA, } from './entity/tenant/tenantReducer';
74
- import { getCurrentTenant, getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, getReceiptsEmail, getTenantBaseById, getTenantBaseViewForTenantId, getTenantBaseViewForTenantView, getTenantsBaseByCheckInDateSelector, getTenantsByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, isOtherProductsEnabledForTenant, isTenantBankingOnly, isTenantBookkeepingEnabled, isTenantCardsOnly, isTenantUsingZeniCOA, isZeniDomainTenant, toTenantCoreDetailsView, } from './entity/tenant/tenantSelector';
74
+ import { getCurrentTenant, getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, getTenantBaseById, getTenantBaseViewForTenantId, getTenantBaseViewForTenantView, getTenantsBaseByCheckInDateSelector, getTenantsByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, isOtherProductsEnabledForTenant, isTenantBankingOnly, isTenantBookkeepingEnabled, isTenantCardsOnly, isTenantUsingZeniCOA, isZeniDomainTenant, toTenantCoreDetailsView, } from './entity/tenant/tenantSelector';
75
75
  import { pushToastNotification } from './entity/toastNotification/toastNotificationReducer';
76
76
  import { getLastNotificationTime, getNotifications, } from './entity/toastNotification/toastNotificationSelector';
77
77
  import { mapFileEntityToAttachment, toContentType, toContentTypeStrict, } from './entity/transaction/stateTypes/attachment';
@@ -481,7 +481,7 @@ export { toTimeframeTick, mapTimePeriodtoTimeframeTick, toTimePeriod, toAbsolute
481
481
  export { toVendorSpendTrendFilterTabsTypeStrict, } from './entity/vendorExpense/vendorExpenseSelector';
482
482
  export { getNumberOfPeriods };
483
483
  export { SCHEDULE_DAYS_OF_MONTH, toScheduleDaysOfMonth, toMonth, toMonthStrict, toQuarter, toQuarterStrict, };
484
- export { getTenantBaseById, getCurrentTenant, getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, getTenantsByCheckInDateSelector, getTenantsBaseByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, toTenantCoreDetailsView, getTenantBaseViewForTenantView, getTenantBaseViewForTenantId, isZeniDomainTenant, isTenantUsingZeniCOA, fetchActiveTenant, fetchAllTenants, updateCurrentTenant, clearAll, doMagicLinkSignIn, verifyDeviceWithTwoFA, resendVerifyDeviceOTP, sendEmailMagicLinkToUser, doSignIn, updateSignInState, doSignOut, sendSessionHeartbeat, resetSignInState, fetchExcludedResourcesForTenant, fetchExternalConnectionsForTenant, saveExternalConnectionForTenant, deleteConnection, saveAPIKeyConnection, saveConnectorCredentials, saveOAuthConnection, initEmailConnectOAuth, toExternalIntegrationType, toExternalSupportedTool, fetchSubscriptionSummaryForTenant, isTenantBankingOnly, isTenantCardsOnly, isTenantBookkeepingEnabled, isOtherProductsEnabledForTenant, getReceiptsEmail, };
484
+ export { getTenantBaseById, getCurrentTenant, getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, getTenantsByCheckInDateSelector, getTenantsBaseByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, toTenantCoreDetailsView, getTenantBaseViewForTenantView, getTenantBaseViewForTenantId, isZeniDomainTenant, isTenantUsingZeniCOA, fetchActiveTenant, fetchAllTenants, updateCurrentTenant, clearAll, doMagicLinkSignIn, verifyDeviceWithTwoFA, resendVerifyDeviceOTP, sendEmailMagicLinkToUser, doSignIn, updateSignInState, doSignOut, sendSessionHeartbeat, resetSignInState, fetchExcludedResourcesForTenant, fetchExternalConnectionsForTenant, saveExternalConnectionForTenant, deleteConnection, saveAPIKeyConnection, saveConnectorCredentials, saveOAuthConnection, initEmailConnectOAuth, toExternalIntegrationType, toExternalSupportedTool, fetchSubscriptionSummaryForTenant, isTenantBankingOnly, isTenantCardsOnly, isTenantBookkeepingEnabled, isOtherProductsEnabledForTenant, };
485
485
  export { toAccountType, toAccountGroupType, getAccountGroupKey, getAllAccounts, getTransactionFilterAccountOptions, };
486
486
  export { getAllClasses, getClassById, getClassFilterOptions, } from './entity/class/classSelector';
487
487
  export { getForecast };
@@ -674,7 +674,7 @@ export { cancelAiAccountantOnboarding, clearAiAccountantView, fetchAiAccountantC
674
674
  export { getAiAccountantCockpitView, } from './view/aiAccountantView/aiAccountantViewSelector';
675
675
  export { fetchChatSessionsForUser, createSession, submitQuestion, updateAiCfoViewScrollPosition, updateCurrentInput, updateCotCollapsedState, clearInput, setSession, clearAiCfoView, clearCurrentSessionId, clearDeleteChatSessionStatus, clearLastContextMessage, createSessionAndSubmit, stopSubmit, stopSubmitQuestion, fetchChatHistory, acceptMasterTOS, deleteChatSession, submitFeedback, updateResponseState, fetchSuggestedQuestions, fetchSuggestedQuestionsSuccess, fetchSuggestedQuestionsFailure, fetchSkills, fetchSkillsSuccess, fetchSkillsFailure, applyAiCfoSidePanelHostPageTransition, clearAiCfoSidePanelHostPageContext, } from './view/aiCfoView/aiCfoViewReducer';
676
676
  export { getAiCfoView, getSuggestedQuestionsForPageContext, getSkills, } from './view/aiCfoView/aiCfoViewSelector';
677
- export { setNewSession, setSessions, updateAiCfoAnswerCardPolicyWizardPlan, upsertAnswerPayload, upsertOrAddQuestionAnswerPayload, addQuestionPayload, clearSession, clearAiCfo, toAiCfoVisualization, appendSyntheticAiCfoAnswer, updateSyntheticAiCfoAnswer, removeSyntheticAiCfoAnswer, clearSyntheticAiCfoAnswers, } from './entity/aiCfo/aiCfoReducer';
677
+ export { setNewSession, setSessions, updateAiCfoAnswerCardPolicyWizardPlan, upsertAnswerPayload, upsertOrAddQuestionAnswerPayload, addQuestionPayload, clearSession, clearAiCfo, toAiCfoExports, toAiCfoVisualization, appendSyntheticAiCfoAnswer, updateSyntheticAiCfoAnswer, removeSyntheticAiCfoAnswer, clearSyntheticAiCfoAnswers, } from './entity/aiCfo/aiCfoReducer';
678
678
  export { getAllQuestionAnswersForChatSession, getQuestionAnswerByIdForChatSession, getAllQuestionsForChatSession, getAiCfoSelectorView, getSyntheticAiCfoAnswersForChatSession, getSyntheticAiCfoAnswerByQuestionAnswerId, } from './entity/aiCfo/aiCfoSelector';
679
679
  export { ALL_AI_CFO_CHARTS_TYPES, ALL_AI_CFO_VISUALIZATION_TYPES, ALL_AI_CFO_ANSWER_STATE_TYPES, ALL_AI_CFO_ANSWER_RESPONSE_TYPES, ALL_INTERACTIVE_FORM_TYPES, toAiCfoVisualizationType, toAiCfoVisualizationTypeStrict, toAiCfoChartType, toAiCfoChartTypeStrict, toAiCfoAnswerStateType, toAiCfoAnswerStateTypeStrict, toAiCfoAnswerResponseType, toAiCfoAnswerResponseTypeStrict, toInteractiveFormType, toInteractiveFormTypeStrict, ALL_SYNTHETIC_AI_CFO_ANSWER_KINDS, toMessageSender, toMessageType, } from './entity/aiCfo/aiCfoState';
680
680
  // ── Card Policy (shared between manual + AI-driven flows) ────────────
package/lib/index.d.ts CHANGED
@@ -137,7 +137,7 @@ import { getTaskGroupById } from './entity/taskGroup/taskGroupSelector';
137
137
  import { TaskGroupState } from './entity/taskGroup/taskGroupState';
138
138
  import { TaskGroupTemplate } from './entity/taskGroupTemplate/taskGroupTemplateState';
139
139
  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, toExternalSupportedTool, updateCurrentTenant, updateSignInState, verifyDeviceWithTwoFA } from './entity/tenant/tenantReducer';
140
- import { CurrentTenant, TenantBaseView, TenantCoreDetailsView, TenantView, TenantsBaseOrdered, TenantsOrdered, getCurrentTenant, getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, getReceiptsEmail, getTenantBaseById, getTenantBaseViewForTenantId, getTenantBaseViewForTenantView, getTenantsBaseByCheckInDateSelector, getTenantsByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, isOtherProductsEnabledForTenant, isTenantBankingOnly, isTenantBookkeepingEnabled, isTenantCardsOnly, isTenantUsingZeniCOA, isZeniDomainTenant, toTenantCoreDetailsView } from './entity/tenant/tenantSelector';
140
+ import { CurrentTenant, TenantBaseView, TenantCoreDetailsView, TenantView, TenantsBaseOrdered, TenantsOrdered, getCurrentTenant, getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, getTenantBaseById, getTenantBaseViewForTenantId, getTenantBaseViewForTenantView, getTenantsBaseByCheckInDateSelector, getTenantsByCheckInDateSelector, getTenantsCoreDetailsByCheckInDateSelector, isOtherProductsEnabledForTenant, isTenantBankingOnly, isTenantBookkeepingEnabled, isTenantCardsOnly, isTenantUsingZeniCOA, isZeniDomainTenant, toTenantCoreDetailsView } from './entity/tenant/tenantSelector';
141
141
  import { CapitalizableAccount, CapitalizableAccounts, CapitalizableClassificationType, CapitalizableMatchPattern, Connection, LoggedInUser, RoleResource, Tenant, TenantProductSettings } from './entity/tenant/tenantState';
142
142
  import { ToastNotificationPayload } from './entity/toastNotification/toastNotificationPayload';
143
143
  import { pushToastNotification } from './entity/toastNotification/toastNotificationReducer';
@@ -703,7 +703,7 @@ export { TimeframeTick, TimeframeTickWithMetaData, toTimeframeTick, mapTimePerio
703
703
  export { VendorSpendTrendFilterTabType, toVendorSpendTrendFilterTabsTypeStrict, } from './entity/vendorExpense/vendorExpenseSelector';
704
704
  export { getNumberOfPeriods };
705
705
  export { SCHEDULE_DAYS_OF_MONTH, ScheduleDaysOfMonth, toScheduleDaysOfMonth, Day, Month, toMonth, toMonthStrict, Quarter, toQuarter, toQuarterStrict, AbsoluteDay, TimePeriod, };
706
- export { CapitalizableAccount, CapitalizableAccounts, CapitalizableClassificationType, CapitalizableMatchPattern, Tenant, TenantView, LoggedInUser, TenantBaseView, CurrentTenant, TenantProductSettings, getTenantBaseById, getCurrentTenant, getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, 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, getReceiptsEmail, };
706
+ export { CapitalizableAccount, CapitalizableAccounts, CapitalizableClassificationType, CapitalizableMatchPattern, Tenant, TenantView, LoggedInUser, TenantBaseView, CurrentTenant, TenantProductSettings, getTenantBaseById, getCurrentTenant, getIsAccountingClassesEnabled, getIsAccountingProjectsEnabled, 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, };
707
707
  export { Account, AccountType, AccountBase, StatementCloseDay, toAccountType, AccountReport, NestedAccountReport, AccountWithBalanceReport, AccountGroup, AccountGroupReportV2, AccountGroupType, toAccountGroupType, AccountGroupReport, getAccountGroupKey, AccountGroupKey, RecommendedAccountBase, AccountFilterOption, getAllAccounts, getTransactionFilterAccountOptions, };
708
708
  export { Class, ClassBase, RecommendedClassBase, } from './entity/class/classState';
709
709
  export { ClassFilterOption, getAllClasses, getClassById, getClassFilterOptions, } from './entity/class/classSelector';
@@ -950,9 +950,9 @@ export type { FeedbackType, SubmitFeedbackPayload, } from './view/aiCfoView/aiCf
950
950
  export type { AiCfoSuggestedQuestionsPageContext } from './common/aiCfo/aiCfoSuggestedQuestionsPageContext';
951
951
  export { AiCfoViewSelector, getAiCfoView, getSuggestedQuestionsForPageContext, getSkills, } from './view/aiCfoView/aiCfoViewSelector';
952
952
  export { MessagePayload, ChatSessionPayload, AiCfoAnswerPayload, } from './entity/aiCfo/aiCfoPayload';
953
- export { setNewSession, setSessions, updateAiCfoAnswerCardPolicyWizardPlan, upsertAnswerPayload, upsertOrAddQuestionAnswerPayload, addQuestionPayload, clearSession, clearAiCfo, toAiCfoVisualization, appendSyntheticAiCfoAnswer, updateSyntheticAiCfoAnswer, removeSyntheticAiCfoAnswer, clearSyntheticAiCfoAnswers, } from './entity/aiCfo/aiCfoReducer';
953
+ export { setNewSession, setSessions, updateAiCfoAnswerCardPolicyWizardPlan, upsertAnswerPayload, upsertOrAddQuestionAnswerPayload, addQuestionPayload, clearSession, clearAiCfo, toAiCfoExports, toAiCfoVisualization, appendSyntheticAiCfoAnswer, updateSyntheticAiCfoAnswer, removeSyntheticAiCfoAnswer, clearSyntheticAiCfoAnswers, } from './entity/aiCfo/aiCfoReducer';
954
954
  export { AiCfoSelectorView, getAllQuestionAnswersForChatSession, getQuestionAnswerByIdForChatSession, getAllQuestionsForChatSession, getAiCfoSelectorView, getSyntheticAiCfoAnswersForChatSession, getSyntheticAiCfoAnswerByQuestionAnswerId, ChatSessionWithOrderedQuestionAnswers, } from './entity/aiCfo/aiCfoSelector';
955
- export { AiCfoQuestionWithAnswer, AiCfoAnswerParagraph, AiCfoAnswerStateType, AiCfoChartType, AiCfoAnswerResponseType, TableVisualization, ChartVisualization, CardNameOption, CardsCardKind, CardsCreationInitialData, CardPolicyDraftPolicy, CardPolicyDraftPolicyEntity, CardPolicyInitialData, CardPolicySpendLimits, CardPolicyStep5Review, CardPolicyUploadSource, CardPolicyWizardPlan, InteractiveFormType, InteractiveFormVisualization, AiCfoVisualization, AiCfoVisualizationType, AiCfoState, ChatSession, ALL_AI_CFO_CHARTS_TYPES, ALL_AI_CFO_VISUALIZATION_TYPES, ALL_AI_CFO_ANSWER_STATE_TYPES, ALL_AI_CFO_ANSWER_RESPONSE_TYPES, ALL_INTERACTIVE_FORM_TYPES, toAiCfoVisualizationType, toAiCfoVisualizationTypeStrict, toAiCfoChartType, toAiCfoChartTypeStrict, toAiCfoAnswerStateType, toAiCfoAnswerStateTypeStrict, toAiCfoAnswerResponseType, toAiCfoAnswerResponseTypeStrict, toInteractiveFormType, toInteractiveFormTypeStrict, ChatSessionWithMessages, ResponseBlockBase, AnswerContentBlockBase, FileAttachmentMetadata, QuestionContentBlockBase, ResponseBlockType, SyntheticAiCfoAnswer, SyntheticAiCfoAnswerKind, ALL_SYNTHETIC_AI_CFO_ANSWER_KINDS, toMessageSender, toMessageType, MessageSender, MessageType, } from './entity/aiCfo/aiCfoState';
955
+ export { AiCfoQuestionWithAnswer, AiCfoAnswerParagraph, AiCfoAnswerStateType, AiCfoChartType, AiCfoAnswerResponseType, TableVisualization, ChartVisualization, CardNameOption, CardsCardKind, CardsCreationInitialData, CardPolicyDraftPolicy, CardPolicyDraftPolicyEntity, CardPolicyInitialData, CardPolicySpendLimits, CardPolicyStep5Review, CardPolicyUploadSource, CardPolicyWizardPlan, InteractiveFormType, InteractiveFormVisualization, AiCfoExport, AiCfoVisualization, AiCfoVisualizationType, AiCfoState, ChatSession, ALL_AI_CFO_CHARTS_TYPES, ALL_AI_CFO_VISUALIZATION_TYPES, ALL_AI_CFO_ANSWER_STATE_TYPES, ALL_AI_CFO_ANSWER_RESPONSE_TYPES, ALL_INTERACTIVE_FORM_TYPES, toAiCfoVisualizationType, toAiCfoVisualizationTypeStrict, toAiCfoChartType, toAiCfoChartTypeStrict, toAiCfoAnswerStateType, toAiCfoAnswerStateTypeStrict, toAiCfoAnswerResponseType, toAiCfoAnswerResponseTypeStrict, toInteractiveFormType, toInteractiveFormTypeStrict, ChatSessionWithMessages, ResponseBlockBase, AnswerContentBlockBase, FileAttachmentMetadata, QuestionContentBlockBase, ResponseBlockType, SyntheticAiCfoAnswer, SyntheticAiCfoAnswerKind, ALL_SYNTHETIC_AI_CFO_ANSWER_KINDS, toMessageSender, toMessageType, MessageSender, MessageType, } from './entity/aiCfo/aiCfoState';
956
956
  export { clearPolicyDocumentExtraction, extractPolicyDocument, fetchCardPolicyMccCategories, fetchCardPolicyRecommendationFromUpload, fetchCardPolicyVendorOptions, removeCardPolicyTemplate, updateCardPolicyMccCategories, updateCardPolicyMccCategoriesFailure, updateCardPolicyStats, updateCardPolicyTemplates, updateCardPolicyVendorOptions, updateCardPolicyVendorOptionsFailure, updateCreatedCardPolicyTemplate, updatePolicyDocumentExtractionFailure, updatePolicyDocumentExtractionSuccess, updatePolicyRecommendationFromUploadFailure, updatePolicyRecommendationFromUploadSuccess, clearCardPolicy, } from './entity/cardPolicy/cardPolicyReducer';
957
957
  export { getAllCardPolicyTemplates, getCardPolicyMccCategories, getCardPolicyMccCategoriesError, getCardPolicyMccCategoriesFetchState, getCardPolicyStats, getCardPolicySuggestedAllowCategories, getCardPolicySuggestedAllowMerchants, getCardPolicySuggestedBlockCategories, getCardPolicySuggestedBlockMerchants, getCardPolicyTemplateById, getCardPolicyTemplatesByIds, getCardPolicyVendorSearchFetchState, getCardPolicyVendorSearchOptions, getCardPolicyVendorSearchString, getExtractedCardPolicyRules, getPolicyDocumentExtractionError, getPolicyDocumentExtractionFetchState, getPolicyRecommendationFromUploadAnswerId, getPolicyRecommendationFromUploadChatSessionId, getPolicyRecommendationFromUploadError, getPolicyRecommendationFromUploadFetchState, getUploadedPolicyDocumentFileName, } from './entity/cardPolicy/cardPolicySelector';
958
958
  export { ALL_CARD_POLICY_TEMPLATE_MODES, ALL_CARD_POLICY_TEMPLATE_STATUSES, CardPolicyState, CardPolicyStats, CardPolicyTemplate, CardPolicyTemplateEntityList, CardPolicyTemplateMode, CardPolicyTemplateSpendLimits, CardPolicyTemplateStatus, CardPolicyVendorSearchEntry, CardPolicyVendorSearchState, ExtractedCardPolicyRules, MccCategory, PolicyDocumentExtractionState, PolicyRecommendationFromUploadState, toCardPolicyTemplateMode, toCardPolicyTemplateStatus, } from './entity/cardPolicy/cardPolicyState';