@iblai/iblai-js 1.19.0 → 1.19.2

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.
@@ -0,0 +1,127 @@
1
+ import { Locator, Page } from '@playwright/test';
2
+ /**
3
+ * Chat-privacy Playwright bindings.
4
+ *
5
+ * Three surfaces, three groups of helpers:
6
+ *
7
+ * 1. **Header toggle** — the nav-bar `ChatPrivacyToggle` (`<HatGlasses />`
8
+ * icon-button that morphs into the "Private Mode" pill).
9
+ * 2. **User profile** — the "Private Mode" tab in `UserProfileModal`
10
+ * (three radio-card options: Normal / Anonymized / Disabled).
11
+ * 3. **Tenant admin** — the "Allow users to control chat privacy" row in
12
+ * the Advanced settings tab (`<Switch>`).
13
+ *
14
+ * All selectors target stable hooks — primarily `data-testid` plus the
15
+ * `data-state` / `data-source` / `aria-pressed` attributes the components
16
+ * already expose. Avoid asserting on visible copy directly (it changes);
17
+ * the label maps below are kept for readable assertions on the rare cases
18
+ * where copy IS the thing we want to lock.
19
+ */
20
+ export declare const CHAT_PRIVACY_LABELS: {
21
+ readonly toggle: {
22
+ /** Title of the mid-session confirmation dialog. */
23
+ readonly dialogTitle: "Enable Private Mode for this chat?";
24
+ /** Label on the dialog's confirm button (matches both idle + busy state via regex). */
25
+ readonly dialogConfirm: RegExp;
26
+ };
27
+ readonly profileTab: {
28
+ /** Tab name in the user profile modal sidebar. */
29
+ readonly tabName: "Private Mode";
30
+ /** Section heading inside the tab body. */
31
+ readonly sectionHeading: "Default Private Mode";
32
+ /** Label text on each radio card. Kept in case the test wants to assert
33
+ * copy explicitly — the click + read paths use the testid instead. */
34
+ readonly cards: {
35
+ readonly normal: "Normal";
36
+ readonly anonymized: "Anonymized";
37
+ readonly disabled: "Disabled";
38
+ };
39
+ };
40
+ readonly tenantToggle: {
41
+ /** Visible row label. */
42
+ readonly rowLabel: "Allow users to control chat privacy";
43
+ };
44
+ };
45
+ /** The four `effective.source` values the chat-privacy resolver returns. */
46
+ export type ChatPrivacySource = 'mentor' | 'tenant' | 'user' | 'session' | 'default';
47
+ /** The user-pickable modes on the profile tab. */
48
+ export type ChatPrivacyMode = 'normal' | 'anonymized' | 'disabled';
49
+ /** `data-state` on the header toggle. */
50
+ export type ChatPrivacyToggleState = 'on' | 'off';
51
+ /**
52
+ * Locator for the nav-bar Private-Mode toggle. The toggle is hidden below
53
+ * the `md` breakpoint — assertions in mobile contexts should use
54
+ * `expectChatPrivacyToggleVisible(scope, false)`.
55
+ */
56
+ export declare function getChatPrivacyToggle(scope: Page | Locator): Locator;
57
+ export declare function expectChatPrivacyToggleVisible(scope: Page | Locator, visible: boolean): Promise<void>;
58
+ /**
59
+ * Assert the toggle is on / off via `data-state` (driven by the resolved
60
+ * effective mode + the local optimistic overlay).
61
+ */
62
+ export declare function expectChatPrivacyState(scope: Page | Locator, state: ChatPrivacyToggleState): Promise<void>;
63
+ /**
64
+ * Assert the resolved precedence-source via `data-source` (mentor / tenant
65
+ * / user / session / default). Useful for verifying the chat-privacy-
66
+ * effective endpoint resolved to the expected tier.
67
+ */
68
+ export declare function expectChatPrivacySource(scope: Page | Locator, source: ChatPrivacySource): Promise<void>;
69
+ /**
70
+ * Lock state is signalled via `aria-disabled` (the component uses
71
+ * `aria-disabled` instead of native `disabled` so the source-aware tooltip
72
+ * stays reachable on the locked pill).
73
+ */
74
+ export declare function expectChatPrivacyLocked(scope: Page | Locator, locked: boolean): Promise<void>;
75
+ /**
76
+ * Click the toggle. Covers two scenarios:
77
+ * - Off → on (with no user messages) → starts a fresh private session.
78
+ * - On (user-initiated, no user messages) → starts a fresh normal session.
79
+ * Use `confirmEnableChatPrivacyMidSession` for the mid-conversation flow.
80
+ */
81
+ export declare function clickChatPrivacyToggle(scope: Page | Locator): Promise<void>;
82
+ /** Locator for the AlertDialog content that the mid-session enable opens. */
83
+ export declare function getChatPrivacyConfirmDialog(scope: Page | Locator): Locator;
84
+ export declare function expectChatPrivacyConfirmDialogOpen(scope: Page | Locator, open: boolean): Promise<void>;
85
+ /**
86
+ * Mid-conversation enable flow:
87
+ * 1. Click the toggle (opens the confirm dialog).
88
+ * 2. Click the "Enable Private Mode" action.
89
+ * The session-level disable-chathistory POST is one-way per spec; the
90
+ * helper resolves once the dialog closes after a successful confirm.
91
+ */
92
+ export declare function confirmEnableChatPrivacyMidSession(scope: Page | Locator): Promise<void>;
93
+ /** Cancel the confirm dialog without enabling. */
94
+ export declare function cancelEnableChatPrivacyMidSession(scope: Page | Locator): Promise<void>;
95
+ /**
96
+ * Switch to the Private Mode tab inside the user profile modal. Assumes
97
+ * the modal is already open. The tab only appears when the tenant has
98
+ * `allow_user_chat_privacy_control` on, so a `false` return from
99
+ * `isPrivateModeTabVisible` is a meaningful state, not an error.
100
+ */
101
+ export declare function isPrivateModeTabVisible(page: Page): Promise<boolean>;
102
+ export declare function switchToPrivateModeTab(page: Page): Promise<void>;
103
+ /** Locator for one of the three radio cards. */
104
+ export declare function getPrivateModeCard(scope: Page | Locator, mode: ChatPrivacyMode): Locator;
105
+ /**
106
+ * Pick a mode by clicking its card. Resolves once the card flips into
107
+ * the selected state via `aria-pressed="true"` — i.e. the mutation came
108
+ * back and the local pending state caught up.
109
+ */
110
+ export declare function selectPrivateMode(scope: Page | Locator, mode: ChatPrivacyMode): Promise<void>;
111
+ /** Assert which mode is currently selected. Uses `aria-pressed` + `data-state`. */
112
+ export declare function expectPrivateModeSelected(scope: Page | Locator, mode: ChatPrivacyMode): Promise<void>;
113
+ /** Assert every card is rendered. Useful as a "tab loaded" sanity check. */
114
+ export declare function expectPrivateModeTabReady(scope: Page | Locator): Promise<void>;
115
+ /** Locator for the tenant-wide "Allow users to control chat privacy" switch. */
116
+ export declare function getTenantChatPrivacySwitch(scope: Page | Locator): Locator;
117
+ /** Locator for the surrounding row (useful for scoping label / spinner queries). */
118
+ export declare function getTenantChatPrivacyRow(scope: Page | Locator): Locator;
119
+ export declare function expectTenantChatPrivacyVisible(scope: Page | Locator, visible: boolean): Promise<void>;
120
+ /** Assert the tenant gate's current state via `aria-checked` on the Radix switch. */
121
+ export declare function expectTenantChatPrivacyEnabled(scope: Page | Locator, enabled: boolean): Promise<void>;
122
+ /**
123
+ * Flip the tenant gate to the desired state. Idempotent — does nothing if
124
+ * the switch is already in the target state. Backend rejects this for
125
+ * non-admins (403) and the component surfaces an error toast in that case.
126
+ */
127
+ export declare function setTenantChatPrivacyEnabled(scope: Page | Locator, enabled: boolean): Promise<void>;
@@ -21,8 +21,10 @@ export type { AgentPromptField, SkillFormValues } from './claw-sandbox-helpers';
21
21
  export { navigateToAuditLog, verifyAuditLogTableVisible, getAuditLogRowCount, verifyAuditLogEntryStructure, verifyAuditLogEmptyState, verifyAuditLogPermissionError, verifyAuditLogGenericError, verifyAuditLogLoading, waitForAuditLogDataLoaded, filterByAction, filterByActor, getAvailableActors, filterByDateRange, clearDateRangeFilter, getPaginationInfo, goToNextPage, goToPreviousPage, goToFirstPage, goToLastPage, goToPage, verifyCurrentPage, isOnLastPage, isOnFirstPage, navigateToAuditLogAndWaitForData, filterByActionAndVerify, filterByActorAndVerify, } from './audit-log-helpers';
22
22
  export { getCurrentTenantShowPaywall, creditBalanceTrigger, creditBalancePanel, creditBalancePlanBadge, expectCreditBalanceVisibilityForTenant, openCreditBalanceDropdown, waitForCreditBalanceLoaded, closeCreditBalanceDropdown, getCreditBalancePlanLabel, getCreditBalanceRemaining, expectCreditBalancePanelForFreePlan, expectCreditBalancePanelForTrialPlan, expectCreditBalancePanelForPremiumPlan, expectCreditBalanceForCurrentPlan, } from './credit-balance-helpers';
23
23
  export type { CreditBalancePlan } from './credit-balance-helpers';
24
- export { PRIVACY_LABELS, isPrivacyTabVisible, switchToPrivacyTab, getPrivacyRouterSwitch, setPrivacyRouterEnabled, expectPrivacyRouterEnabled, expectPrivacyFieldsHidden, expectPrivacyFieldsVisible, selectPrivacyAction, setBlockMessage, getEntityChip, setEntitySelected, expectEntitySelected, getOutputFilterSwitch, setOutputFilterEnabled, expectOutputFilterEnabled, } from './privacy-tab-helpers';
24
+ export { PRIVACY_LABELS, isPrivacyTabVisible, switchToPrivacyTab, expectPrivacyFieldsHidden, expectPrivacyFieldsVisible, selectPrivacyAction, setBlockMessage, getEntityChip, setEntitySelected, expectEntitySelected, getOutputFilterSwitch, setOutputFilterEnabled, expectOutputFilterEnabled, } from './privacy-tab-helpers';
25
25
  export type { PrivacyAction, PrivacyEntity } from './privacy-tab-helpers';
26
+ export { CHAT_PRIVACY_LABELS, getChatPrivacyToggle, expectChatPrivacyToggleVisible, expectChatPrivacyState, expectChatPrivacySource, expectChatPrivacyLocked, clickChatPrivacyToggle, getChatPrivacyConfirmDialog, expectChatPrivacyConfirmDialogOpen, confirmEnableChatPrivacyMidSession, cancelEnableChatPrivacyMidSession, isPrivateModeTabVisible, switchToPrivateModeTab, getPrivateModeCard, selectPrivateMode, expectPrivateModeSelected, expectPrivateModeTabReady, getTenantChatPrivacySwitch, getTenantChatPrivacyRow, expectTenantChatPrivacyVisible, expectTenantChatPrivacyEnabled, setTenantChatPrivacyEnabled, } from './chat-privacy-helpers';
27
+ export type { ChatPrivacyMode, ChatPrivacySource, ChatPrivacyToggleState, } from './chat-privacy-helpers';
26
28
  export { VOICE_LABELS, isVoiceTabVisible, switchToVoiceTab, switchToVoiceSubTab, getVoiceProviderCard, selectVoiceProvider, expectVoiceProviderSelected, openMentorVoicePicker, openCallConfigVoicePicker, previewMentorVoiceInline, previewCallConfigVoiceInline, expectMentorVoiceTriggerShows, expectCallConfigVoiceTriggerShows, searchVoices, getVoiceRow, expectVoiceVisible, selectVoice, previewVoice, saveVoiceSettings, getCallConfigForm, expectCallConfigVisible, selectCallMode, setCallLanguage, selectLlmProvider, selectTtsProvider, selectSttProvider, expectTtsSelectDisabled, expectSttSelectDisabled, setUseFunctionCallingEnabled, setEnableVideo, saveCallConfig, resetCallConfig, } from './voice-tab-helpers';
27
29
  export type { VoiceProvider, CallMode, TtsProvider, SttProvider, LlmProvider, } from './voice-tab-helpers';
28
30
  export { SCREENSHARE_LABELS, isScreenShareTabVisible, switchToScreenShareTab, openScreenSharePromptEditor, setScreenSharePrompt, saveScreenSharePrompts, expectScreenShareDisabledHint, } from './screenshare-tab-helpers';
@@ -14,7 +14,6 @@ import { Locator, Page } from '@playwright/test';
14
14
  export declare const PRIVACY_LABELS: {
15
15
  readonly tabName: "Privacy";
16
16
  readonly headerTitle: "Privacy";
17
- readonly routerLabel: "Enable Privacy Router";
18
17
  readonly actionLabel: "When PII is detected";
19
18
  readonly blockMessageLabel: "Block Message";
20
19
  readonly entitiesLabel: "Entity Types";
@@ -51,20 +50,16 @@ export type PrivacyEntity = keyof typeof PRIVACY_LABELS.entityChips;
51
50
  export declare function isPrivacyTabVisible(page: Page): Promise<boolean>;
52
51
  /**
53
52
  * Switch to the Privacy tab. Assumes the Edit Mentor dialog is open.
53
+ *
54
+ * The Privacy Router on/off toggle lives on the Settings tab — this tab
55
+ * only shows dependent PII-handling fields when the router is enabled.
56
+ * Confirm landing via the tab body's testid rather than any inner label,
57
+ * since the field labels are conditional.
54
58
  */
55
59
  export declare function switchToPrivacyTab(page: Page): Promise<void>;
56
- /**
57
- * Locator for the master privacy-router switch.
58
- */
59
- export declare function getPrivacyRouterSwitch(scope: Page | Locator): Locator;
60
- /**
61
- * Click the master toggle until it matches the desired state.
62
- */
63
- export declare function setPrivacyRouterEnabled(scope: Page | Locator, enabled: boolean): Promise<void>;
64
- export declare function expectPrivacyRouterEnabled(scope: Page | Locator, enabled: boolean): Promise<void>;
65
60
  /**
66
61
  * Assert that all dependent privacy fields are hidden — the case when the
67
- * master toggle is off.
62
+ * Privacy Router is disabled (on the Settings tab).
68
63
  */
69
64
  export declare function expectPrivacyFieldsHidden(scope: Page | Locator): Promise<void>;
70
65
  /**
@@ -0,0 +1,127 @@
1
+ import { Locator, Page } from '@playwright/test';
2
+ /**
3
+ * Chat-privacy Playwright bindings.
4
+ *
5
+ * Three surfaces, three groups of helpers:
6
+ *
7
+ * 1. **Header toggle** — the nav-bar `ChatPrivacyToggle` (`<HatGlasses />`
8
+ * icon-button that morphs into the "Private Mode" pill).
9
+ * 2. **User profile** — the "Private Mode" tab in `UserProfileModal`
10
+ * (three radio-card options: Normal / Anonymized / Disabled).
11
+ * 3. **Tenant admin** — the "Allow users to control chat privacy" row in
12
+ * the Advanced settings tab (`<Switch>`).
13
+ *
14
+ * All selectors target stable hooks — primarily `data-testid` plus the
15
+ * `data-state` / `data-source` / `aria-pressed` attributes the components
16
+ * already expose. Avoid asserting on visible copy directly (it changes);
17
+ * the label maps below are kept for readable assertions on the rare cases
18
+ * where copy IS the thing we want to lock.
19
+ */
20
+ export declare const CHAT_PRIVACY_LABELS: {
21
+ readonly toggle: {
22
+ /** Title of the mid-session confirmation dialog. */
23
+ readonly dialogTitle: "Enable Private Mode for this chat?";
24
+ /** Label on the dialog's confirm button (matches both idle + busy state via regex). */
25
+ readonly dialogConfirm: RegExp;
26
+ };
27
+ readonly profileTab: {
28
+ /** Tab name in the user profile modal sidebar. */
29
+ readonly tabName: "Private Mode";
30
+ /** Section heading inside the tab body. */
31
+ readonly sectionHeading: "Default Private Mode";
32
+ /** Label text on each radio card. Kept in case the test wants to assert
33
+ * copy explicitly — the click + read paths use the testid instead. */
34
+ readonly cards: {
35
+ readonly normal: "Normal";
36
+ readonly anonymized: "Anonymized";
37
+ readonly disabled: "Disabled";
38
+ };
39
+ };
40
+ readonly tenantToggle: {
41
+ /** Visible row label. */
42
+ readonly rowLabel: "Allow users to control chat privacy";
43
+ };
44
+ };
45
+ /** The four `effective.source` values the chat-privacy resolver returns. */
46
+ export type ChatPrivacySource = 'mentor' | 'tenant' | 'user' | 'session' | 'default';
47
+ /** The user-pickable modes on the profile tab. */
48
+ export type ChatPrivacyMode = 'normal' | 'anonymized' | 'disabled';
49
+ /** `data-state` on the header toggle. */
50
+ export type ChatPrivacyToggleState = 'on' | 'off';
51
+ /**
52
+ * Locator for the nav-bar Private-Mode toggle. The toggle is hidden below
53
+ * the `md` breakpoint — assertions in mobile contexts should use
54
+ * `expectChatPrivacyToggleVisible(scope, false)`.
55
+ */
56
+ export declare function getChatPrivacyToggle(scope: Page | Locator): Locator;
57
+ export declare function expectChatPrivacyToggleVisible(scope: Page | Locator, visible: boolean): Promise<void>;
58
+ /**
59
+ * Assert the toggle is on / off via `data-state` (driven by the resolved
60
+ * effective mode + the local optimistic overlay).
61
+ */
62
+ export declare function expectChatPrivacyState(scope: Page | Locator, state: ChatPrivacyToggleState): Promise<void>;
63
+ /**
64
+ * Assert the resolved precedence-source via `data-source` (mentor / tenant
65
+ * / user / session / default). Useful for verifying the chat-privacy-
66
+ * effective endpoint resolved to the expected tier.
67
+ */
68
+ export declare function expectChatPrivacySource(scope: Page | Locator, source: ChatPrivacySource): Promise<void>;
69
+ /**
70
+ * Lock state is signalled via `aria-disabled` (the component uses
71
+ * `aria-disabled` instead of native `disabled` so the source-aware tooltip
72
+ * stays reachable on the locked pill).
73
+ */
74
+ export declare function expectChatPrivacyLocked(scope: Page | Locator, locked: boolean): Promise<void>;
75
+ /**
76
+ * Click the toggle. Covers two scenarios:
77
+ * - Off → on (with no user messages) → starts a fresh private session.
78
+ * - On (user-initiated, no user messages) → starts a fresh normal session.
79
+ * Use `confirmEnableChatPrivacyMidSession` for the mid-conversation flow.
80
+ */
81
+ export declare function clickChatPrivacyToggle(scope: Page | Locator): Promise<void>;
82
+ /** Locator for the AlertDialog content that the mid-session enable opens. */
83
+ export declare function getChatPrivacyConfirmDialog(scope: Page | Locator): Locator;
84
+ export declare function expectChatPrivacyConfirmDialogOpen(scope: Page | Locator, open: boolean): Promise<void>;
85
+ /**
86
+ * Mid-conversation enable flow:
87
+ * 1. Click the toggle (opens the confirm dialog).
88
+ * 2. Click the "Enable Private Mode" action.
89
+ * The session-level disable-chathistory POST is one-way per spec; the
90
+ * helper resolves once the dialog closes after a successful confirm.
91
+ */
92
+ export declare function confirmEnableChatPrivacyMidSession(scope: Page | Locator): Promise<void>;
93
+ /** Cancel the confirm dialog without enabling. */
94
+ export declare function cancelEnableChatPrivacyMidSession(scope: Page | Locator): Promise<void>;
95
+ /**
96
+ * Switch to the Private Mode tab inside the user profile modal. Assumes
97
+ * the modal is already open. The tab only appears when the tenant has
98
+ * `allow_user_chat_privacy_control` on, so a `false` return from
99
+ * `isPrivateModeTabVisible` is a meaningful state, not an error.
100
+ */
101
+ export declare function isPrivateModeTabVisible(page: Page): Promise<boolean>;
102
+ export declare function switchToPrivateModeTab(page: Page): Promise<void>;
103
+ /** Locator for one of the three radio cards. */
104
+ export declare function getPrivateModeCard(scope: Page | Locator, mode: ChatPrivacyMode): Locator;
105
+ /**
106
+ * Pick a mode by clicking its card. Resolves once the card flips into
107
+ * the selected state via `aria-pressed="true"` — i.e. the mutation came
108
+ * back and the local pending state caught up.
109
+ */
110
+ export declare function selectPrivateMode(scope: Page | Locator, mode: ChatPrivacyMode): Promise<void>;
111
+ /** Assert which mode is currently selected. Uses `aria-pressed` + `data-state`. */
112
+ export declare function expectPrivateModeSelected(scope: Page | Locator, mode: ChatPrivacyMode): Promise<void>;
113
+ /** Assert every card is rendered. Useful as a "tab loaded" sanity check. */
114
+ export declare function expectPrivateModeTabReady(scope: Page | Locator): Promise<void>;
115
+ /** Locator for the tenant-wide "Allow users to control chat privacy" switch. */
116
+ export declare function getTenantChatPrivacySwitch(scope: Page | Locator): Locator;
117
+ /** Locator for the surrounding row (useful for scoping label / spinner queries). */
118
+ export declare function getTenantChatPrivacyRow(scope: Page | Locator): Locator;
119
+ export declare function expectTenantChatPrivacyVisible(scope: Page | Locator, visible: boolean): Promise<void>;
120
+ /** Assert the tenant gate's current state via `aria-checked` on the Radix switch. */
121
+ export declare function expectTenantChatPrivacyEnabled(scope: Page | Locator, enabled: boolean): Promise<void>;
122
+ /**
123
+ * Flip the tenant gate to the desired state. Idempotent — does nothing if
124
+ * the switch is already in the target state. Backend rejects this for
125
+ * non-admins (403) and the component surfaces an error toast in that case.
126
+ */
127
+ export declare function setTenantChatPrivacyEnabled(scope: Page | Locator, enabled: boolean): Promise<void>;
@@ -21,8 +21,10 @@ export type { AgentPromptField, SkillFormValues } from './claw-sandbox-helpers';
21
21
  export { navigateToAuditLog, verifyAuditLogTableVisible, getAuditLogRowCount, verifyAuditLogEntryStructure, verifyAuditLogEmptyState, verifyAuditLogPermissionError, verifyAuditLogGenericError, verifyAuditLogLoading, waitForAuditLogDataLoaded, filterByAction, filterByActor, getAvailableActors, filterByDateRange, clearDateRangeFilter, getPaginationInfo, goToNextPage, goToPreviousPage, goToFirstPage, goToLastPage, goToPage, verifyCurrentPage, isOnLastPage, isOnFirstPage, navigateToAuditLogAndWaitForData, filterByActionAndVerify, filterByActorAndVerify, } from './audit-log-helpers';
22
22
  export { getCurrentTenantShowPaywall, creditBalanceTrigger, creditBalancePanel, creditBalancePlanBadge, expectCreditBalanceVisibilityForTenant, openCreditBalanceDropdown, waitForCreditBalanceLoaded, closeCreditBalanceDropdown, getCreditBalancePlanLabel, getCreditBalanceRemaining, expectCreditBalancePanelForFreePlan, expectCreditBalancePanelForTrialPlan, expectCreditBalancePanelForPremiumPlan, expectCreditBalanceForCurrentPlan, } from './credit-balance-helpers';
23
23
  export type { CreditBalancePlan } from './credit-balance-helpers';
24
- export { PRIVACY_LABELS, isPrivacyTabVisible, switchToPrivacyTab, getPrivacyRouterSwitch, setPrivacyRouterEnabled, expectPrivacyRouterEnabled, expectPrivacyFieldsHidden, expectPrivacyFieldsVisible, selectPrivacyAction, setBlockMessage, getEntityChip, setEntitySelected, expectEntitySelected, getOutputFilterSwitch, setOutputFilterEnabled, expectOutputFilterEnabled, } from './privacy-tab-helpers';
24
+ export { PRIVACY_LABELS, isPrivacyTabVisible, switchToPrivacyTab, expectPrivacyFieldsHidden, expectPrivacyFieldsVisible, selectPrivacyAction, setBlockMessage, getEntityChip, setEntitySelected, expectEntitySelected, getOutputFilterSwitch, setOutputFilterEnabled, expectOutputFilterEnabled, } from './privacy-tab-helpers';
25
25
  export type { PrivacyAction, PrivacyEntity } from './privacy-tab-helpers';
26
+ export { CHAT_PRIVACY_LABELS, getChatPrivacyToggle, expectChatPrivacyToggleVisible, expectChatPrivacyState, expectChatPrivacySource, expectChatPrivacyLocked, clickChatPrivacyToggle, getChatPrivacyConfirmDialog, expectChatPrivacyConfirmDialogOpen, confirmEnableChatPrivacyMidSession, cancelEnableChatPrivacyMidSession, isPrivateModeTabVisible, switchToPrivateModeTab, getPrivateModeCard, selectPrivateMode, expectPrivateModeSelected, expectPrivateModeTabReady, getTenantChatPrivacySwitch, getTenantChatPrivacyRow, expectTenantChatPrivacyVisible, expectTenantChatPrivacyEnabled, setTenantChatPrivacyEnabled, } from './chat-privacy-helpers';
27
+ export type { ChatPrivacyMode, ChatPrivacySource, ChatPrivacyToggleState, } from './chat-privacy-helpers';
26
28
  export { VOICE_LABELS, isVoiceTabVisible, switchToVoiceTab, switchToVoiceSubTab, getVoiceProviderCard, selectVoiceProvider, expectVoiceProviderSelected, openMentorVoicePicker, openCallConfigVoicePicker, previewMentorVoiceInline, previewCallConfigVoiceInline, expectMentorVoiceTriggerShows, expectCallConfigVoiceTriggerShows, searchVoices, getVoiceRow, expectVoiceVisible, selectVoice, previewVoice, saveVoiceSettings, getCallConfigForm, expectCallConfigVisible, selectCallMode, setCallLanguage, selectLlmProvider, selectTtsProvider, selectSttProvider, expectTtsSelectDisabled, expectSttSelectDisabled, setUseFunctionCallingEnabled, setEnableVideo, saveCallConfig, resetCallConfig, } from './voice-tab-helpers';
27
29
  export type { VoiceProvider, CallMode, TtsProvider, SttProvider, LlmProvider, } from './voice-tab-helpers';
28
30
  export { SCREENSHARE_LABELS, isScreenShareTabVisible, switchToScreenShareTab, openScreenSharePromptEditor, setScreenSharePrompt, saveScreenSharePrompts, expectScreenShareDisabledHint, } from './screenshare-tab-helpers';
@@ -14,7 +14,6 @@ import { Locator, Page } from '@playwright/test';
14
14
  export declare const PRIVACY_LABELS: {
15
15
  readonly tabName: "Privacy";
16
16
  readonly headerTitle: "Privacy";
17
- readonly routerLabel: "Enable Privacy Router";
18
17
  readonly actionLabel: "When PII is detected";
19
18
  readonly blockMessageLabel: "Block Message";
20
19
  readonly entitiesLabel: "Entity Types";
@@ -51,20 +50,16 @@ export type PrivacyEntity = keyof typeof PRIVACY_LABELS.entityChips;
51
50
  export declare function isPrivacyTabVisible(page: Page): Promise<boolean>;
52
51
  /**
53
52
  * Switch to the Privacy tab. Assumes the Edit Mentor dialog is open.
53
+ *
54
+ * The Privacy Router on/off toggle lives on the Settings tab — this tab
55
+ * only shows dependent PII-handling fields when the router is enabled.
56
+ * Confirm landing via the tab body's testid rather than any inner label,
57
+ * since the field labels are conditional.
54
58
  */
55
59
  export declare function switchToPrivacyTab(page: Page): Promise<void>;
56
- /**
57
- * Locator for the master privacy-router switch.
58
- */
59
- export declare function getPrivacyRouterSwitch(scope: Page | Locator): Locator;
60
- /**
61
- * Click the master toggle until it matches the desired state.
62
- */
63
- export declare function setPrivacyRouterEnabled(scope: Page | Locator, enabled: boolean): Promise<void>;
64
- export declare function expectPrivacyRouterEnabled(scope: Page | Locator, enabled: boolean): Promise<void>;
65
60
  /**
66
61
  * Assert that all dependent privacy fields are hidden — the case when the
67
- * master toggle is off.
62
+ * Privacy Router is disabled (on the Settings tab).
68
63
  */
69
64
  export declare function expectPrivacyFieldsHidden(scope: Page | Locator): Promise<void>;
70
65
  /**