@pitcher/js-api 1.28.0 → 1.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/js-api.esm.js +477 -44
- package/js-api.esm.js.map +1 -1
- package/js-api.umd.min.js +32 -11
- package/js-api.umd.min.js.map +1 -1
- package/lib/ai-tasks/__tests__/weekly-focus.spec.d.ts +1 -0
- package/lib/ai-tasks/weekly-focus.d.ts +241 -0
- package/lib/apps/browser/appTypes.d.ts +28 -0
- package/lib/apps/browser/stores/api.d.ts +6 -1
- package/lib/apps/browser/stores/app.d.ts +5 -0
- package/lib/apps/browser/stores/app.selectionPruneScope.test.d.ts +1 -0
- package/lib/apps/browser/stores/upload.d.ts +26 -1
- package/lib/apps/browser/stores/upload.types.d.ts +9 -0
- package/lib/apps/browser/util/lifecycle.d.ts +57 -0
- package/lib/apps/browser/util/lifecycle.test.d.ts +1 -0
- package/lib/apps/canvas-builder/components/ui/DynamicContent/useDynamicContent.d.ts +2 -0
- package/lib/apps/canvas-builder/components/ui/Multimedia/Multimedia.ldAsset.spec.d.ts +1 -0
- package/lib/apps/canvas-builder/composables/useCanvas.d.ts +203 -1
- package/lib/apps/canvas-builder/composables/useCanvas.saveEcho.spec.d.ts +1 -0
- package/lib/apps/canvas-builder/composables/useCanvasBlocks.d.ts +36 -0
- package/lib/apps/canvas-builder/composables/useCanvasExit.d.ts +1 -0
- package/lib/apps/canvas-builder/composables/useCanvasHistory.d.ts +36 -0
- package/lib/apps/canvas-builder/composables/useCanvasTheme.d.ts +20 -18
- package/lib/apps/canvas-builder/composables/useContentSelector.d.ts +8 -1
- package/lib/apps/canvas-builder/composables/useInstalledEmbeddables.d.ts +1 -1
- package/lib/apps/canvas-builder/composables/useNavigatorDrawer.d.ts +2 -0
- package/lib/apps/canvas-builder/composables/usePopupApps.d.ts +2 -0
- package/lib/apps/canvas-builder/types/canvas.d.ts +53 -3
- package/lib/apps/canvas-builder/util/canvas.util.d.ts +8 -0
- package/lib/apps/canvas-builder/util/completionWizard.util.d.ts +107 -0
- package/lib/apps/canvas-builder/util/completionWizard.util.test.d.ts +1 -0
- package/lib/apps/canvas-builder/util/fullscreenMode.util.d.ts +7 -0
- package/lib/apps/canvas-builder/util/fullscreenMode.util.test.d.ts +1 -0
- package/lib/apps/canvas-builder/util/lazySections.util.d.ts +35 -0
- package/lib/apps/canvas-builder/util/lazySections.util.test.d.ts +1 -0
- package/lib/apps/collection-player/composables/collection-navigation.util.d.ts +27 -0
- package/lib/apps/collection-player/composables/collection-navigation.util.spec.d.ts +1 -0
- package/lib/apps/collection-player/stores/app.store.d.ts +3 -0
- package/lib/apps/content-selector/components/Assets.uploaderRefresh.spec.d.ts +1 -0
- package/lib/apps/content-selector/stores/app.d.ts +1 -1
- package/lib/components/CFileViewer/pdf/CFileViewer.pdf.annotations.use.d.ts +5 -1
- package/lib/components/CFileViewer/pdf/CFileViewer.pdf.formFields.use.d.ts +8 -0
- package/lib/components/CFileViewer/pdf/CFileViewer.pdf.link.use.d.ts +1 -1
- package/lib/components/CFileViewer/pdf/CFileViewer.pdf.overlayItems.use.d.ts +1 -1
- package/lib/components/CFileViewer/pdf/CFileViewer.pdf.use.d.ts +4 -9
- package/lib/components/CFileViewer/pdf/CFileViewer.pdf.util.d.ts +1 -1
- package/lib/components/CFileViewer/pdf/CFileViewerFullscreen.pdf.use.d.ts +1 -1
- package/lib/components/CFileViewer/pdf/__tests__/CFileViewer.pdf.annotations.text.test.d.ts +1 -0
- package/lib/components/savedCanvases/CSavedCanvasesManagement.use.d.ts +1 -0
- package/lib/composables/useCourseOnlyApps.d.ts +1 -1
- package/lib/composables/usePdfInterpolation.d.ts +2 -2
- package/lib/composables/useWindowEvents.d.ts +1 -1
- package/lib/constants/cdp.const.d.ts +1 -0
- package/lib/constants/translationLanguages.const.d.ts +72 -0
- package/lib/main.lib.d.ts +2 -0
- package/lib/sdk/api/HighLevelApi.d.ts +26 -9
- package/lib/sdk/api/modules/admin/types.admin.d.ts +1 -0
- package/lib/sdk/api/modules/ai.d.ts +43 -1
- package/lib/sdk/api/modules/ai.spec.d.ts +1 -0
- package/lib/sdk/api/modules/canvas.d.ts +8 -0
- package/lib/sdk/api/modules/index.d.ts +2 -1
- package/lib/sdk/api/modules/stt.d.ts +65 -0
- package/lib/sdk/api/modules/stt.spec.d.ts +1 -0
- package/lib/sdk/api/modules/tts.d.ts +41 -0
- package/lib/sdk/api/modules/tts.spec.d.ts +1 -0
- package/lib/sdk/api/modules/ui/types.ui.d.ts +7 -0
- package/lib/sdk/interfaces.d.ts +26 -1
- package/lib/sdk/main.d.ts +35 -6
- package/lib/sdk/payload.types.d.ts +284 -0
- package/lib/types/ai-tasks.const.d.ts +39 -1
- package/lib/types/call.d.ts +14 -0
- package/lib/types/canvases.d.ts +0 -3
- package/lib/types/launchDarkly.types.d.ts +1 -3
- package/lib/types/organizationSettings.types.d.ts +10 -0
- package/lib/types/sfdc.d.ts +15 -0
- package/lib/util/soql.util.d.ts +36 -0
- package/lib/util/user.d.ts +18 -0
- package/lib/util/user.test.d.ts +1 -0
- package/package.json +1 -1
- package/types/openapi/index.d.ts +0 -1
- package/types/openapi/models/DeletedEnvironment.d.ts +0 -1
- package/types/openapi/models/Environment.d.ts +0 -1
- package/types/openapi/models/EnvironmentRequest.d.ts +0 -1
- package/types/openapi/models/File.d.ts +2 -0
- package/types/openapi/models/FileRetrieve.d.ts +2 -0
- package/types/openapi/models/PatchedEnvironmentRequest.d.ts +0 -1
- package/types/openapi/models/PatchedUserRequest.d.ts +1 -2
- package/types/openapi/models/User.d.ts +1 -2
- package/types/openapi/models/UserRequest.d.ts +1 -2
- package/lib/sdk/api/modules/languages.d.ts +0 -8
- package/types/openapi/models/LanguageEnum.d.ts +0 -12
package/lib/sdk/main.d.ts
CHANGED
|
@@ -195,9 +195,11 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
195
195
|
broadcastToWebviews: (event: import('./interfaces').PitcherEvent) => Promise<any>;
|
|
196
196
|
subscribe: () => Promise<any>;
|
|
197
197
|
unsubscribe: () => Promise<any>;
|
|
198
|
+
postJsonWithTimeout<T>(url: string, body: unknown, accessToken: string, timeoutMs: number, label: string): Promise<T>;
|
|
198
199
|
aiGetCapabilities(): Promise<import('./payload.types').AIRuntimeCapabilities>;
|
|
199
200
|
aiComplete(payload: import('./payload.types').AICompletePayload): Promise<import('./payload.types').AICompleteResult>;
|
|
200
201
|
piaSearchAnswer(payload: import('./payload.types').PiaSearchAnswerPayload): Promise<import('./payload.types').PiaSearchAnswerResult>;
|
|
202
|
+
weeklyFocusRank(payload: import('./payload.types').WeeklyFocusRankPayload): Promise<import('./payload.types').WeeklyFocusRankResult>;
|
|
201
203
|
appsDbGetEntries(payload: import('./payload.types').AppsDbGetEntriesPayload): Promise<import('./payload.types').AppsDbEntriesResult>;
|
|
202
204
|
appsDbUpsertEntry(payload: import('./payload.types').AppsDbUpsertEntryPayload): Promise<import('./payload.types').AppsDbEntry>;
|
|
203
205
|
appsDbDeleteEntry(payload: import('./payload.types').AppsDbDeleteEntryPayload): Promise<void>;
|
|
@@ -206,10 +208,9 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
206
208
|
openExternalUrl(payload: import('./payload.types').OpenExternalUrlRequestPayload): Promise<void>;
|
|
207
209
|
getEnv(): Promise<import('./interfaces').PitcherEnv>;
|
|
208
210
|
updateMyUser(payload: {
|
|
209
|
-
language?:
|
|
211
|
+
language?: string | undefined;
|
|
210
212
|
}): Promise<import('../main.lib').User>;
|
|
211
213
|
isOffline(): Promise<boolean>;
|
|
212
|
-
getLanguages(): Promise<import('./api/modules').Language[]>;
|
|
213
214
|
getCanvases(payload: import('../main.lib').GetCanvasesParams & {
|
|
214
215
|
filters?: Record<string, any>;
|
|
215
216
|
fields?: string;
|
|
@@ -222,6 +223,7 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
222
223
|
id: import('../main.lib').CanvasRetrieve["id"];
|
|
223
224
|
instance_id?: import('../main.lib').Instance["id"];
|
|
224
225
|
fields?: string;
|
|
226
|
+
lazy_sections?: boolean;
|
|
225
227
|
}): Promise<import('../main.lib').CanvasRetrieve>;
|
|
226
228
|
updateCanvasIndicators(payload: {
|
|
227
229
|
indicators: Record<string, import('../main.lib').CanvasIndicator>;
|
|
@@ -373,6 +375,14 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
373
375
|
canvas_id: import('../main.lib').CanvasRetrieve["id"];
|
|
374
376
|
theme_id: import('../main.lib').CanvasThemeRetrieve["id"];
|
|
375
377
|
}>;
|
|
378
|
+
sttStart(payload: import('./payload.types').SttStartPayload): Promise<void>;
|
|
379
|
+
sttAvailability(): Promise<import('./payload.types').SttAvailabilityResult>;
|
|
380
|
+
sttWarmup(): Promise<void>;
|
|
381
|
+
sttStop(payload: import('./payload.types').SttStopPayload): Promise<import('./payload.types').SttStopResult>;
|
|
382
|
+
sttErrorCode(error: unknown): import('./payload.types').SttErrorCode | undefined;
|
|
383
|
+
ttsSpeak(payload: import('./payload.types').TtsSpeakPayload): Promise<import('./payload.types').TtsSpeakResult>;
|
|
384
|
+
ttsStop(): Promise<void>;
|
|
385
|
+
ttsErrorCode(error: unknown): import('./payload.types').TtsErrorCode | undefined;
|
|
376
386
|
API: import('./api/LowLevelApi').LowLevelApi;
|
|
377
387
|
} | {
|
|
378
388
|
getUsers(payload?: import('../main.lib').GetUsersParams): Promise<import('../main.lib').PaginatedData<import('../main.lib').User>>;
|
|
@@ -492,9 +502,11 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
492
502
|
broadcastToWebviews: (event: import('./interfaces').PitcherEvent) => Promise<any>;
|
|
493
503
|
subscribe: () => Promise<any>;
|
|
494
504
|
unsubscribe: () => Promise<any>;
|
|
505
|
+
postJsonWithTimeout<T>(url: string, body: unknown, accessToken: string, timeoutMs: number, label: string): Promise<T>;
|
|
495
506
|
aiGetCapabilities(): Promise<import('./payload.types').AIRuntimeCapabilities>;
|
|
496
507
|
aiComplete(payload: import('./payload.types').AICompletePayload): Promise<import('./payload.types').AICompleteResult>;
|
|
497
508
|
piaSearchAnswer(payload: import('./payload.types').PiaSearchAnswerPayload): Promise<import('./payload.types').PiaSearchAnswerResult>;
|
|
509
|
+
weeklyFocusRank(payload: import('./payload.types').WeeklyFocusRankPayload): Promise<import('./payload.types').WeeklyFocusRankResult>;
|
|
498
510
|
appsDbGetEntries(payload: import('./payload.types').AppsDbGetEntriesPayload): Promise<import('./payload.types').AppsDbEntriesResult>;
|
|
499
511
|
appsDbUpsertEntry(payload: import('./payload.types').AppsDbUpsertEntryPayload): Promise<import('./payload.types').AppsDbEntry>;
|
|
500
512
|
appsDbDeleteEntry(payload: import('./payload.types').AppsDbDeleteEntryPayload): Promise<void>;
|
|
@@ -503,10 +515,9 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
503
515
|
openExternalUrl(payload: import('./payload.types').OpenExternalUrlRequestPayload): Promise<void>;
|
|
504
516
|
getEnv(): Promise<import('./interfaces').PitcherEnv>;
|
|
505
517
|
updateMyUser(payload: {
|
|
506
|
-
language?:
|
|
518
|
+
language?: string | undefined;
|
|
507
519
|
}): Promise<import('../main.lib').User>;
|
|
508
520
|
isOffline(): Promise<boolean>;
|
|
509
|
-
getLanguages(): Promise<import('./api/modules').Language[]>;
|
|
510
521
|
getCanvases(payload: import('../main.lib').GetCanvasesParams & {
|
|
511
522
|
filters?: Record<string, any>;
|
|
512
523
|
fields?: string;
|
|
@@ -519,6 +530,7 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
519
530
|
id: import('../main.lib').CanvasRetrieve["id"];
|
|
520
531
|
instance_id?: import('../main.lib').Instance["id"];
|
|
521
532
|
fields?: string;
|
|
533
|
+
lazy_sections?: boolean;
|
|
522
534
|
}): Promise<import('../main.lib').CanvasRetrieve>;
|
|
523
535
|
updateCanvasIndicators(payload: {
|
|
524
536
|
indicators: Record<string, import('../main.lib').CanvasIndicator>;
|
|
@@ -670,6 +682,14 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
670
682
|
canvas_id: import('../main.lib').CanvasRetrieve["id"];
|
|
671
683
|
theme_id: import('../main.lib').CanvasThemeRetrieve["id"];
|
|
672
684
|
}>;
|
|
685
|
+
sttStart(payload: import('./payload.types').SttStartPayload): Promise<void>;
|
|
686
|
+
sttAvailability(): Promise<import('./payload.types').SttAvailabilityResult>;
|
|
687
|
+
sttWarmup(): Promise<void>;
|
|
688
|
+
sttStop(payload: import('./payload.types').SttStopPayload): Promise<import('./payload.types').SttStopResult>;
|
|
689
|
+
sttErrorCode(error: unknown): import('./payload.types').SttErrorCode | undefined;
|
|
690
|
+
ttsSpeak(payload: import('./payload.types').TtsSpeakPayload): Promise<import('./payload.types').TtsSpeakResult>;
|
|
691
|
+
ttsStop(): Promise<void>;
|
|
692
|
+
ttsErrorCode(error: unknown): import('./payload.types').TtsErrorCode | undefined;
|
|
673
693
|
API: import('./api/LowLevelApi').LowLevelApi;
|
|
674
694
|
};
|
|
675
695
|
openSharingSettings(payload: import('./api/modules/ui/types.ui').UiOpenSharingSettingsRequest): Promise<import('./api/modules/ui/types.ui').UiOpenSharingSettingsResponse>;
|
|
@@ -735,9 +755,11 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
735
755
|
broadcastToWebviews: (event: import('./interfaces').PitcherEvent) => Promise<any>;
|
|
736
756
|
subscribe: () => Promise<any>;
|
|
737
757
|
unsubscribe: () => Promise<any>;
|
|
758
|
+
postJsonWithTimeout<T>(url: string, body: unknown, accessToken: string, timeoutMs: number, label: string): Promise<T>;
|
|
738
759
|
aiGetCapabilities(): Promise<import('./payload.types').AIRuntimeCapabilities>;
|
|
739
760
|
aiComplete(payload: import('./payload.types').AICompletePayload): Promise<import('./payload.types').AICompleteResult>;
|
|
740
761
|
piaSearchAnswer(payload: import('./payload.types').PiaSearchAnswerPayload): Promise<import('./payload.types').PiaSearchAnswerResult>;
|
|
762
|
+
weeklyFocusRank(payload: import('./payload.types').WeeklyFocusRankPayload): Promise<import('./payload.types').WeeklyFocusRankResult>;
|
|
741
763
|
appsDbGetEntries(payload: import('./payload.types').AppsDbGetEntriesPayload): Promise<import('./payload.types').AppsDbEntriesResult>;
|
|
742
764
|
appsDbUpsertEntry(payload: import('./payload.types').AppsDbUpsertEntryPayload): Promise<import('./payload.types').AppsDbEntry>;
|
|
743
765
|
appsDbDeleteEntry(payload: import('./payload.types').AppsDbDeleteEntryPayload): Promise<void>;
|
|
@@ -745,10 +767,9 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
745
767
|
openExternalUrl(payload: import('./payload.types').OpenExternalUrlRequestPayload): Promise<void>;
|
|
746
768
|
getEnv(): Promise<import('./interfaces').PitcherEnv>;
|
|
747
769
|
updateMyUser(payload: {
|
|
748
|
-
language?:
|
|
770
|
+
language?: string | undefined;
|
|
749
771
|
}): Promise<import('../main.lib').User>;
|
|
750
772
|
isOffline(): Promise<boolean>;
|
|
751
|
-
getLanguages(): Promise<import('./api/modules').Language[]>;
|
|
752
773
|
getCanvases(payload: import('../main.lib').GetCanvasesParams & {
|
|
753
774
|
filters?: Record<string, any>;
|
|
754
775
|
fields?: string;
|
|
@@ -903,6 +924,14 @@ export declare function useApi(options?: ApiOptions): {
|
|
|
903
924
|
canvas_id: import('../main.lib').CanvasRetrieve["id"];
|
|
904
925
|
theme_id: import('../main.lib').CanvasThemeRetrieve["id"];
|
|
905
926
|
}>;
|
|
927
|
+
sttStart(payload: import('./payload.types').SttStartPayload): Promise<void>;
|
|
928
|
+
sttAvailability(): Promise<import('./payload.types').SttAvailabilityResult>;
|
|
929
|
+
sttWarmup(): Promise<void>;
|
|
930
|
+
sttStop(payload: import('./payload.types').SttStopPayload): Promise<import('./payload.types').SttStopResult>;
|
|
931
|
+
sttErrorCode(error: unknown): import('./payload.types').SttErrorCode | undefined;
|
|
932
|
+
ttsSpeak(payload: import('./payload.types').TtsSpeakPayload): Promise<import('./payload.types').TtsSpeakResult>;
|
|
933
|
+
ttsStop(): Promise<void>;
|
|
934
|
+
ttsErrorCode(error: unknown): import('./payload.types').TtsErrorCode | undefined;
|
|
906
935
|
API: import('./api/LowLevelApi').LowLevelApi;
|
|
907
936
|
} | {
|
|
908
937
|
broadcast: (event: import('./interfaces').PitcherEvent) => Promise<any>;
|
|
@@ -563,6 +563,22 @@ export interface PiaSearchAnswerPayload {
|
|
|
563
563
|
* Optional narrowing of the online route's candidate pool to these file ids.
|
|
564
564
|
*/
|
|
565
565
|
file_ids?: string[];
|
|
566
|
+
/**
|
|
567
|
+
* Opt in to server-side document grounding: the online route fetches the
|
|
568
|
+
* transcripts of `file_ids` and adds query-relevant verbatim passages to the
|
|
569
|
+
* prompt. Requires `file_ids`; ignored without them.
|
|
570
|
+
*
|
|
571
|
+
* Explicit rather than inferred from `file_ids` so that a caller which
|
|
572
|
+
* already narrows by ids keeps its exact prompt. Online path only — the
|
|
573
|
+
* on-device token budget cannot absorb document excerpts.
|
|
574
|
+
*/
|
|
575
|
+
include_document_text?: boolean;
|
|
576
|
+
/**
|
|
577
|
+
* Client-derived synonym terms for the query. Used only to choose WHICH
|
|
578
|
+
* passages of `file_ids` are excerpted — they can never add a file, and the
|
|
579
|
+
* server re-validates them. Ignored unless `include_document_text` is set.
|
|
580
|
+
*/
|
|
581
|
+
expansion_terms?: string[];
|
|
566
582
|
/**
|
|
567
583
|
* Token budget for the on-device completion.
|
|
568
584
|
*/
|
|
@@ -662,3 +678,271 @@ export interface PiaSearchAnswerResult {
|
|
|
662
678
|
*/
|
|
663
679
|
source: 'on_device' | 'online';
|
|
664
680
|
}
|
|
681
|
+
/**
|
|
682
|
+
* Error codes returned on a rejected `stt.start` / `stt.stop` — cross-platform
|
|
683
|
+
* (iOS bridge AND the web host engines). Surfaced verbatim in the rejected
|
|
684
|
+
* request's error body (iOS: `error_code`/`errorCode`; web: the error `message` /
|
|
685
|
+
* `reason` string — read them uniformly via `api.sttErrorCode`).
|
|
686
|
+
*
|
|
687
|
+
* - `STT_DISABLED` — the `enable_stt_dictation` config flag is off for this instance.
|
|
688
|
+
* - `STT_DEVICE_UNSUPPORTED` — the device can't run the on-device model.
|
|
689
|
+
* - `STT_MODEL_NOT_READY` — the whisper model isn't downloaded yet. Trigger a
|
|
690
|
+
* model download (`ai.download_model` with `"whisper"`), then retry `stt.start`.
|
|
691
|
+
* - `STT_BUSY` — the mic is held by another session (a live call recording, or
|
|
692
|
+
* another dictation). Surface a "mic in use" hint / prompt to stop the other session.
|
|
693
|
+
* - `STT_MIC_PERMISSION_DENIED` — microphone permission was denied.
|
|
694
|
+
* - `STT_NOT_RECORDING` — `stt.stop` for a `session_id` that isn't active.
|
|
695
|
+
* - `STT_CAPTURE_FAILED` / `STT_ERROR` — generic capture / other failure.
|
|
696
|
+
*/
|
|
697
|
+
export type SttErrorCode = 'STT_DISABLED' | 'STT_DEVICE_UNSUPPORTED' | 'STT_MODEL_NOT_READY' | 'STT_BUSY' | 'STT_MIC_PERMISSION_DENIED' | 'STT_NOT_RECORDING' | 'STT_CAPTURE_FAILED' | 'STT_ERROR';
|
|
698
|
+
/**
|
|
699
|
+
* Payload for `stt.start` — cross-platform (identical shape on iOS and web).
|
|
700
|
+
* Keys are already snake_case, so `LowLevelApi`'s `snakeCaseKeys` transform is a
|
|
701
|
+
* no-op (no `RAW_PAYLOAD_METHODS` entry needed; the `vocabulary` string values
|
|
702
|
+
* are left untouched by the key-only transform).
|
|
703
|
+
*/
|
|
704
|
+
export interface SttStartPayload {
|
|
705
|
+
/**
|
|
706
|
+
* Caller-chosen session id. All `stt.partial` / `stt.interrupted` events and
|
|
707
|
+
* the matching `stt.stop` are keyed by it. Re-starting with the same id
|
|
708
|
+
* replaces that session.
|
|
709
|
+
*/
|
|
710
|
+
session_id: string;
|
|
711
|
+
/**
|
|
712
|
+
* ISO 639-1 code (e.g. `"en"`) to force a language. Omit/`null` for
|
|
713
|
+
* auto-detect (the default, like native iOS dictation).
|
|
714
|
+
*/
|
|
715
|
+
language?: string | null;
|
|
716
|
+
/**
|
|
717
|
+
* Proper nouns likely to be spoken (the current call's CRM contact / account
|
|
718
|
+
* / product names). Biases recognition toward correct spelling (e.g.
|
|
719
|
+
* "Dr. Sarah O'Brien" instead of "Dr. Starwhop Brine"). Send the relevant
|
|
720
|
+
* names, not the whole CRM — it's length-capped on the native side.
|
|
721
|
+
*/
|
|
722
|
+
vocabulary?: string[];
|
|
723
|
+
}
|
|
724
|
+
/**
|
|
725
|
+
* Payload for `stt.stop` — cross-platform.
|
|
726
|
+
*/
|
|
727
|
+
export interface SttStopPayload {
|
|
728
|
+
/**
|
|
729
|
+
* The `session_id` passed to the matching `stt.start`.
|
|
730
|
+
*/
|
|
731
|
+
session_id: string;
|
|
732
|
+
}
|
|
733
|
+
/**
|
|
734
|
+
* Result of `stt.stop` — cross-platform.
|
|
735
|
+
*/
|
|
736
|
+
export interface SttStopResult {
|
|
737
|
+
/**
|
|
738
|
+
* The final, full transcript for the session.
|
|
739
|
+
*/
|
|
740
|
+
transcript: string;
|
|
741
|
+
}
|
|
742
|
+
/**
|
|
743
|
+
* Body of the `stt.partial` event (host → JS; native bridge on iOS, the Impact
|
|
744
|
+
* host engine on web). Fires roughly every ~2s while recording.
|
|
745
|
+
*/
|
|
746
|
+
export interface SttPartialEvent {
|
|
747
|
+
/**
|
|
748
|
+
* Session the partial belongs to.
|
|
749
|
+
*/
|
|
750
|
+
session_id: string;
|
|
751
|
+
/**
|
|
752
|
+
* The FULL transcript so far — NOT a delta. Replace the field's dictation
|
|
753
|
+
* content with it, don't append.
|
|
754
|
+
*/
|
|
755
|
+
text: string;
|
|
756
|
+
/**
|
|
757
|
+
* Per-session monotonic counter (only advances when `text` changes) for
|
|
758
|
+
* ordering / de-dupe.
|
|
759
|
+
*/
|
|
760
|
+
index: number;
|
|
761
|
+
}
|
|
762
|
+
/**
|
|
763
|
+
* Body of the `stt.interrupted` event (host → JS; native bridge on iOS, the
|
|
764
|
+
* Impact host engine on web). Fires only when a session ends WITHOUT a
|
|
765
|
+
* `stt.stop` — a normal `stt.stop` does NOT fire this.
|
|
766
|
+
*/
|
|
767
|
+
export interface SttInterruptedEvent {
|
|
768
|
+
/**
|
|
769
|
+
* Session that was interrupted.
|
|
770
|
+
*/
|
|
771
|
+
session_id: string;
|
|
772
|
+
/**
|
|
773
|
+
* Why the session ended — an opaque, host-specific string; don't parse it,
|
|
774
|
+
* just stop waiting for partials and reset the field. Known values:
|
|
775
|
+
* - iOS: `"preempted"` — a higher-priority call recording took the mic.
|
|
776
|
+
* - web: `"error:capture_ended"` (mic/track ended), `"error:<code>"` (a fatal
|
|
777
|
+
* Web Speech recognition error, e.g. `"error:network"`), `"error:restart_failed"`.
|
|
778
|
+
*/
|
|
779
|
+
reason: string;
|
|
780
|
+
}
|
|
781
|
+
/**
|
|
782
|
+
* Which engine answers `stt.start` on the current platform: `"native"` (iOS
|
|
783
|
+
* on-device Speech), `"whisper"` (web on-device Whisper) or `"webspeech"` (web
|
|
784
|
+
* cloud fallback, audio leaves the device).
|
|
785
|
+
*/
|
|
786
|
+
export type SttEngineKind = 'native' | 'whisper' | 'webspeech';
|
|
787
|
+
/**
|
|
788
|
+
* Why dictation is unavailable: `"disabled"` (the `enable_stt_dictation`
|
|
789
|
+
* instance flag is off) or `"unsupported"` (no engine can run on this device).
|
|
790
|
+
*/
|
|
791
|
+
export type SttUnavailableReason = 'disabled' | 'unsupported';
|
|
792
|
+
/**
|
|
793
|
+
* Result of `stt.availability` — a side-effect-free capability check an app
|
|
794
|
+
* should call BEFORE offering a mic button. It does NOT prompt for the
|
|
795
|
+
* microphone or download any model; it only reports whether dictation could be
|
|
796
|
+
* started, so the UI can hide/disable the control up front.
|
|
797
|
+
*/
|
|
798
|
+
export interface SttAvailabilityResult {
|
|
799
|
+
/**
|
|
800
|
+
* Dictation can be started right now — the feature is enabled AND an engine
|
|
801
|
+
* can run on this device.
|
|
802
|
+
*/
|
|
803
|
+
available: boolean;
|
|
804
|
+
/**
|
|
805
|
+
* The engine that would answer `stt.start`, or `null` when unavailable. Note
|
|
806
|
+
* `"webspeech"` sends audio off-device, so a UI may want to reflect that.
|
|
807
|
+
*/
|
|
808
|
+
engine: SttEngineKind | null;
|
|
809
|
+
/**
|
|
810
|
+
* Present when `available` is `false`: `"disabled"` (feature flag off) or
|
|
811
|
+
* `"unsupported"` (no engine on this device / browser).
|
|
812
|
+
*/
|
|
813
|
+
reason?: SttUnavailableReason;
|
|
814
|
+
}
|
|
815
|
+
/**
|
|
816
|
+
* Error codes returned on `tts.speak` — as a bridge APIError
|
|
817
|
+
* (`{ code, message, details }`) on iOS, or in the host `{ reason }` on web.
|
|
818
|
+
*
|
|
819
|
+
* - `TTS_EMPTY_TEXT` — no text was provided.
|
|
820
|
+
* - `TTS_VOICE_UNAVAILABLE` — a `language` was requested but no installed voice
|
|
821
|
+
* matches. The message tells the user to download it (iOS Settings ›
|
|
822
|
+
* Accessibility › Spoken Content › Voices) — surface it so the UI can prompt.
|
|
823
|
+
* - `TTS_ERROR` — unexpected fallback.
|
|
824
|
+
*/
|
|
825
|
+
export type TtsErrorCode = 'TTS_EMPTY_TEXT' | 'TTS_VOICE_UNAVAILABLE' | 'TTS_ERROR';
|
|
826
|
+
/**
|
|
827
|
+
* Payload for `tts.speak`. The exact native wire contract — keys are single
|
|
828
|
+
* words, so LowLevelApi's `snakeCaseKeys` transform is a no-op; no
|
|
829
|
+
* `RAW_PAYLOAD_METHODS` entry is needed.
|
|
830
|
+
*/
|
|
831
|
+
export interface TtsSpeakPayload {
|
|
832
|
+
/**
|
|
833
|
+
* The text to speak. Empty/whitespace rejects with `TTS_EMPTY_TEXT`.
|
|
834
|
+
*/
|
|
835
|
+
text: string;
|
|
836
|
+
/**
|
|
837
|
+
* BCP-47/ISO language tag (e.g. `"en-US"`). If given, an installed offline
|
|
838
|
+
* voice is required, else the call rejects with `TTS_VOICE_UNAVAILABLE`. Omit
|
|
839
|
+
* to use the system voice.
|
|
840
|
+
*/
|
|
841
|
+
language?: string;
|
|
842
|
+
/**
|
|
843
|
+
* Speech rate; clamped to the platform min…max.
|
|
844
|
+
*/
|
|
845
|
+
rate?: number;
|
|
846
|
+
/**
|
|
847
|
+
* Speech pitch; clamped `0.5`…`2.0` (`1.0` = normal).
|
|
848
|
+
*/
|
|
849
|
+
pitch?: number;
|
|
850
|
+
}
|
|
851
|
+
/**
|
|
852
|
+
* Result of `tts.speak`. The promise resolves when the utterance FINISHES.
|
|
853
|
+
*/
|
|
854
|
+
export interface TtsSpeakResult {
|
|
855
|
+
/**
|
|
856
|
+
* `true` → finished speaking naturally; `false` → it was stopped (`tts.stop`)
|
|
857
|
+
* or replaced by a newer `tts.speak` (only one utterance is active at a time).
|
|
858
|
+
*/
|
|
859
|
+
completed: boolean;
|
|
860
|
+
}
|
|
861
|
+
/**
|
|
862
|
+
* Payload for `weeklyFocusRank` — one high-level call that ranks the rep's
|
|
863
|
+
* next-7-days meetings, routed on-device (iOS Gemma) or online (next-core
|
|
864
|
+
* Bedrock route). Calendar fetching stays caller-side: the caller owns the
|
|
865
|
+
* meeting list and passes it in.
|
|
866
|
+
*/
|
|
867
|
+
export interface WeeklyFocusRankPayload {
|
|
868
|
+
/**
|
|
869
|
+
* The rep's meetings. Windowed to today + 6 days by the SDK/route — send the
|
|
870
|
+
* whole calendar if that is what you have.
|
|
871
|
+
*/
|
|
872
|
+
meetings: WeeklyFocusRankMeeting[];
|
|
873
|
+
/**
|
|
874
|
+
* One CRM context bundle per UNIQUE account, keyed by `account_id` (open
|
|
875
|
+
* tasks, opportunity state, recent calls — whatever the admin mapped).
|
|
876
|
+
*/
|
|
877
|
+
context?: Record<string, WeeklyFocusRankAccountContext>;
|
|
878
|
+
/**
|
|
879
|
+
* Instance to rank in. Defaults to the env's active instance.
|
|
880
|
+
*/
|
|
881
|
+
instance_id?: string;
|
|
882
|
+
/**
|
|
883
|
+
* IANA zone the 7-day window is measured in. Defaults to the device's zone,
|
|
884
|
+
* which is the rep's zone on-device; ALWAYS sent to the online route, whose
|
|
885
|
+
* server clock is UTC.
|
|
886
|
+
*/
|
|
887
|
+
time_zone?: string;
|
|
888
|
+
/**
|
|
889
|
+
* How many meetings to pick (1-8, default 5).
|
|
890
|
+
*/
|
|
891
|
+
max_picks?: number;
|
|
892
|
+
/**
|
|
893
|
+
* Keep at most one pick per account. Default true.
|
|
894
|
+
*/
|
|
895
|
+
one_per_account?: boolean;
|
|
896
|
+
}
|
|
897
|
+
export interface WeeklyFocusRankMeeting {
|
|
898
|
+
event_id: string;
|
|
899
|
+
account_id: string;
|
|
900
|
+
account_name: string;
|
|
901
|
+
meeting_subject: string;
|
|
902
|
+
/** ISO datetime, or a date-only 'YYYY-MM-DD'. */
|
|
903
|
+
meeting_time: string;
|
|
904
|
+
attendee_count?: number;
|
|
905
|
+
}
|
|
906
|
+
export interface WeeklyFocusRankAccountContext {
|
|
907
|
+
sections: Array<{
|
|
908
|
+
label: string;
|
|
909
|
+
items: Array<{
|
|
910
|
+
title: string;
|
|
911
|
+
fields?: Array<{
|
|
912
|
+
label: string;
|
|
913
|
+
value: string;
|
|
914
|
+
}>;
|
|
915
|
+
days_ago?: number | null;
|
|
916
|
+
}>;
|
|
917
|
+
fields_curated?: boolean;
|
|
918
|
+
}>;
|
|
919
|
+
}
|
|
920
|
+
/** One ranked pick, resolved back to a real meeting id. */
|
|
921
|
+
export interface WeeklyFocusRankPick {
|
|
922
|
+
event_id: string;
|
|
923
|
+
/** 1 = highest priority; unique and contiguous from 1. */
|
|
924
|
+
rank: number;
|
|
925
|
+
reason: string;
|
|
926
|
+
}
|
|
927
|
+
/**
|
|
928
|
+
* Unified `weeklyFocusRank` result across both serving paths.
|
|
929
|
+
*/
|
|
930
|
+
export interface WeeklyFocusRankResult {
|
|
931
|
+
/**
|
|
932
|
+
* One or two sentences summarising the week. Empty when the week is empty.
|
|
933
|
+
*/
|
|
934
|
+
hero: string;
|
|
935
|
+
/**
|
|
936
|
+
* The picked meetings, highest priority first.
|
|
937
|
+
*/
|
|
938
|
+
top: WeeklyFocusRankPick[];
|
|
939
|
+
/**
|
|
940
|
+
* Meetings in the 7-day window that were NOT picked — including those the
|
|
941
|
+
* ranking never saw. The surface renders this as "+N more this week".
|
|
942
|
+
*/
|
|
943
|
+
collapsed_count: number;
|
|
944
|
+
/**
|
|
945
|
+
* Which runtime produced the ranking.
|
|
946
|
+
*/
|
|
947
|
+
source: 'on_device' | 'online';
|
|
948
|
+
}
|
|
@@ -28,6 +28,19 @@
|
|
|
28
28
|
* engine — its context comes from the caller / iOS SmartStore — so it is
|
|
29
29
|
* offline/Gemma-capable (`backends: ['bedrock', 'gemma']`).
|
|
30
30
|
*
|
|
31
|
+
* `weekly_focus` (PIT-7257) is another NEW task added alongside the locked four
|
|
32
|
+
* (NOT a rename/removal). It ranks the rep's next-7-days meetings by how much
|
|
33
|
+
* they need preparation, using each account's CRM context. Unlike every other
|
|
34
|
+
* task it is a PORT of a shipped implementation: it has been running on-device
|
|
35
|
+
* (Gemma `ai.complete`) inside the pre-call-brief app since PIT-6305, so
|
|
36
|
+
* `backends: ['bedrock', 'gemma']` is validated in practice rather than aspired
|
|
37
|
+
* to. `requires` is empty for the same reason as `pia_search`: the meeting list
|
|
38
|
+
* and per-account context are request-envelope fields, not AITaskRequirement
|
|
39
|
+
* vocabulary. Its prompt/window/parser are implemented twice — in
|
|
40
|
+
* `src/lib/ai-tasks/weekly-focus.ts` (SDK + app) and in next-core's
|
|
41
|
+
* `prompts/weekly-focus.ts` (Bedrock route) — kept behaviourally in lockstep by
|
|
42
|
+
* each side's tests, since next-core imports canvas-ui types only (ADR-002).
|
|
43
|
+
*
|
|
31
44
|
* `pia_search` (PIT-6863) is another NEW task added alongside the locked four
|
|
32
45
|
* (NOT a rename/removal). It answers a rep's natural-language question over the
|
|
33
46
|
* instance's content + metadata (Postgres/Django candidates + aiAnalysis
|
|
@@ -37,9 +50,34 @@
|
|
|
37
50
|
* ['bedrock', 'gemma']`. `requires` is empty: its inputs (query + instance) are
|
|
38
51
|
* request-envelope fields, not AITaskRequirement vocabulary, and candidate
|
|
39
52
|
* retrieval happens server-side.
|
|
53
|
+
*
|
|
54
|
+
* `content_metadata` (cluster F / R137) is another NEW task added alongside the
|
|
55
|
+
* locked four (NOT a rename/removal). It proposes metadata field values and tags
|
|
56
|
+
* for ONE content file, constrained to the instance's own metadata template —
|
|
57
|
+
* Django validates `File.metadata` writes against that template, so select
|
|
58
|
+
* fields must stay inside the template's allowed option values. `backends:
|
|
59
|
+
* ['bedrock']` only: it is an admin-context bulk operation, with no on-device
|
|
60
|
+
* (Gemma) serving. `requires` is empty for the same reason as `pia_search`: the
|
|
61
|
+
* file facts and template fields are request-envelope inputs, not
|
|
62
|
+
* AITaskRequirement vocabulary.
|
|
63
|
+
*
|
|
64
|
+
* `translate` (Gartner R128 / cluster G) is another NEW task added alongside the
|
|
65
|
+
* locked four (NOT a rename/removal). It translates keyed prose segments of a
|
|
66
|
+
* canvas template into ONE target language — N segments in, N translations out,
|
|
67
|
+
* keyed, with per-segment error isolation: a segment whose translation loses a
|
|
68
|
+
* Handlebars placeholder or an HTML tag keeps its source text and is reported,
|
|
69
|
+
* rather than failing the whole template. It is the FIRST task whose output must
|
|
70
|
+
* line up 1:1 with its input, and because JSON Schema cannot express that, the
|
|
71
|
+
* parity guarantee lives in next-core code (`reconcileTranslations`, called
|
|
72
|
+
* route-side after the model call) and not in the output schema. `backends:
|
|
73
|
+
* ['bedrock']` only: it is an admin-context content-governance operation with no
|
|
74
|
+
* on-device (Gemma) serving, and binary documents take the DeepL document path
|
|
75
|
+
* instead, which is not an AITask. `requires` is empty for the same reason as
|
|
76
|
+
* `pia_search`: the segments and the target language are request-envelope inputs,
|
|
77
|
+
* not AITaskRequirement vocabulary.
|
|
40
78
|
*/
|
|
41
79
|
/** Locked cross-backend task ids. AITask id === the wire-contract string. */
|
|
42
|
-
export type AITask = 'meeting_prep' | 'discussion_points' | 'pitch_deck' | 'post_call_summary' | 'account_insights' | 'precall_notes' | 'pia_search';
|
|
80
|
+
export type AITask = 'meeting_prep' | 'discussion_points' | 'pitch_deck' | 'post_call_summary' | 'account_insights' | 'precall_notes' | 'pia_search' | 'weekly_focus' | 'content_metadata' | 'translate';
|
|
43
81
|
/**
|
|
44
82
|
* Vocabulary of declarative input requirements a task can depend on. A task's
|
|
45
83
|
* `requires` list is server-enforced in next-core (missing → 400
|
package/lib/types/call.d.ts
CHANGED
|
@@ -54,5 +54,19 @@ export interface Call {
|
|
|
54
54
|
presentationHistory?: CallPresentationHistory;
|
|
55
55
|
presentationHistoryMetadata?: CallPresentationHistoryMetadata;
|
|
56
56
|
recentAccounts?: SfAccount[];
|
|
57
|
+
/**
|
|
58
|
+
* Context accounts beyond the primary.
|
|
59
|
+
*
|
|
60
|
+
* The React meeting bar's "Set context" overlay is **single-select** — it writes exactly one
|
|
61
|
+
* account — so it no longer produces entries here; the field is kept because other flows (CRM
|
|
62
|
+
* Hub launches, passthrough, cross-account attendees) and calls persisted by older bundles can
|
|
63
|
+
* still carry them. `selectedAccount` stays the primary and remains the only account the
|
|
64
|
+
* single-account consumers see (the meeting-notes recording bridge, recents, and the deck
|
|
65
|
+
* scope), so this is purely additive — nothing existing reads it.
|
|
66
|
+
*
|
|
67
|
+
* Optional because `Call` is persisted in localStorage: a call object written by an older
|
|
68
|
+
* bundle has no such key.
|
|
69
|
+
*/
|
|
70
|
+
additionalAccounts?: SfAccountMini[];
|
|
57
71
|
}
|
|
58
72
|
export declare const INITIAL_CALL_STATE: Call;
|
package/lib/types/canvases.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { CanvasRetrieve, User } from '../../types/openapi';
|
|
2
1
|
export interface GetCanvasesParams {
|
|
3
2
|
search?: string;
|
|
4
3
|
account__id?: string;
|
|
@@ -19,11 +18,9 @@ export interface GetCanvasesParams {
|
|
|
19
18
|
template__id?: string;
|
|
20
19
|
}
|
|
21
20
|
export interface CanvasMetadataRetrieve {
|
|
22
|
-
canvas_id: CanvasRetrieve['id'];
|
|
23
21
|
config: Record<string, any> & {
|
|
24
22
|
presentation_component_metadata: Record<string, any>;
|
|
25
23
|
};
|
|
26
|
-
owner_id: User['id'];
|
|
27
24
|
}
|
|
28
25
|
export declare enum CanvasesViewsTypes {
|
|
29
26
|
SAVED = "saved",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type LaunchDarklyBooleanFlagKey = '
|
|
1
|
+
export type LaunchDarklyBooleanFlagKey = 'allow_ai_prompts_in_canvas_text' | 'allow_bulk_actions_canvases_files' | 'allow_content_grid_autofill' | 'allow_canvas_duplication' | 'allow_canvases_tables_columns_settings' | 'allow_table_column_resizing' | 'allow_creating_canvas_with_no_template' | 'allow_dynamic_data_table_for_scribble_component' | 'allow_html_for_scribble_component' | 'allow_embeddable_for_scribble_component' | 'allow_embeddable_hiding' | 'allow_multimedia_for_scribble_component' | 'allow_note_taking' | 'allow_rep_canvas_metadata_edit' | 'allow_rep_file_distributions' | 'allow_rep_file_rating' | 'allow_rep_file_upload' | 'allow_saving_annotations_in_personal_layer' | 'allow_user_to_edit_font_size_and_color_in_canvas_tokens' | 'are_sections_system_controlled' | 'enable_canvas_core_distributions' | 'copy_context_to_canvas' | 'copy_template_metadata_to_canvas' | 'disable_canvas_edit_for_reps' | 'disable_custom_tooltips' | 'disable_file_edit_content' | 'enable_inline_wopi_edit_button' | 'disable_fullscreen_canvas_builder' | 'disable_impact_web_browser_fullscreen' | 'disable_user_invitations' | 'display_section_list_name' | 'disable_download_canvas' | 'enable_ai_generated_thumbnails' | 'enable_analytics' | 'enable_app_developer_role' | 'enable_algolia_search' | 'enable_background_image_theme_options' | 'enable_better_canvas_builder_control_bars_on_zoom' | 'enable_bulk_update_file_attributes' | 'enable_canvas_as_home' | 'enable_canvas_blocks' | 'enable_canvas_node_debugging' | 'enable_canvas_freeze' | 'enable_canvas_locks' | 'enable_canvas_template_edit_in_impact' | 'enable_canvas_tokens' | 'enable_collaborations' | 'enable_collection_player_data_accessor' | 'enable_content_grid_data_accessor' | 'enable_content_translation' | 'enable_content_type_change_in_content_selector' | 'enable_cross_tab_instance_reload_for_ld_sync' | 'enable_create_section_from_section_template' | 'enable_custom_display_overrides' | 'enable_default_crm_shape' | 'enable_detailed_date_format' | 'enable_dsr_readonly_annotations' | 'enable_dnd_html_editor' | 'enable_dynamic_content_component' | 'enable_dynamic_data_table_component' | 'enable_custom_data_tables' | 'enable_embedded_video_autoplay' | 'enable_embedded_video' | 'enable_enhanced_canvas_drawer_app' | 'enable_enhanced_indicators' | 'enable_enhanced_section_execution_states' | 'enable_experimental_canvas_builder_dnd' | 'enable_extra_file_data' | 'enable_file_copy' | 'enable_file_pages_metadata' | 'enable_file_revisions' | 'enable_file_divisible_permission' | 'enable_folder_details_edit' | 'enable_folder_distributions' | 'enable_handlebar_template_support' | 'enable_height_in_component_theming' | 'enable_home_customization' | 'enable_hotspot_visibility' | 'enable_improved_canvas_node_updating' | 'enable_individual_users_in_file_distribution' | 'enable_inline_filter_options' | 'enable_insearch_in_section_selector' | 'enable_instance_cloner' | 'enable_advanced_cloner' | 'enable_content_promotion' | 'enable_instance_editor_role' | 'enable_instance_navigation_from_management' | 'enable_knock_notifications' | 'enable_maintain_section_theme_control' | 'enable_metadata_in_file_uploads_with_default_values' | 'enable_more_intuitive_component_spacing' | 'enable_multi_destination_upload' | 'enable_new_meeting_bar' | 'enable_provider_agnostic_meeting_bar' | 'enable_original_pdf_link' | 'enable_scale_content' | 'enable_sorting_in_tiptap_table' | 'enable_stt_dictation' | 'enable_cloud_stt_fallback' | 'enable_theme_assets' | 'enable_toc_enhancements_to_support_same_section_in_section_list' | 'enable_pia_assistant' | 'enable_pipe_character_multi_search' | 'enable_popup_apps' | 'enable_pre_send_validation' | 'enable_reorder_search' | 'enable_reorder_scribble_isolation' | 'enable_reorder_component_options_menu' | 'enable_resizable_multimedia_component' | 'enable_responsive_scribble_component' | 'enable_saved_canvases_filters' | 'enable_short_tag_column_in_tables' | 'enable_scribble_component' | 'enable_scribble_content_as_background' | 'enable_search_and_filters_in_multimedia_component' | 'enable_section_context_in_dsr' | 'enable_selectors_dnd' | 'enable_section_selector_edit_section' | 'enable_smart_folders' | 'enable_smart_folders_for_sections' | 'enable_smart_folders_in_section_selector' | 'enable_smart_folders_in_files' | 'enable_sorting_in_sections' | 'enable_suggested_tags' | 'enable_template_component_permissions' | 'enable_template_folders' | 'enable_theme_options_border_radius' | 'enable_themes' | 'hide_asset_uploader' | 'hide_user_feedback_widget' | 'include_files_content_in_print' | 'interpolate_rep_canvases_on_edit_mode' | 'is_timeline_component_allowed' | 'launch_in_full_screen_on_present_mode' | 'prefer_online_handlers' | 'restrict_owned_files_from_admins' | 'show_asset_manager_for_multimedia' | 'show_clear_all_annotations_button' | 'show_content_selector_list_view' | 'show_metadata_filters_in_all_canvas_things' | 'show_only_preview_mode_for_html_component' | 'show_popularity_icons' | 'use_core_endpoint_for_analytics' | 'convert_pptx_to_section_with_scribble_pdfjs' | 'use_short_url_for_shared_link' | 'use_zoho_instead_of_ms_wopi' | 'enable_new_section_list' | 'enable_sharebox_apps' | 'enable_sharebox_bulk_filtering' | 'enable_back_to_previous_location_in_canvas' | 'enable_crm_shape_for_external_links' | 'enable_adaptive_popup_apps' | 'enable_file_version_polling' | 'skip_pspdfkit_wait_for_high_res_thumbs' | 'enable_reactive_scribble_component_toolbar' | 'enable_embeddable_full_screen_mode' | 'enable_enhanced_user_management' | 'enable_impersonation' | 'enable_instance_admin_user_assignment' | 'keep_static_pptx_editable' | 'enable_canvas_pdf_dimensions' | 'enable_editable_pptx_of_canvas' | 'enable_editable_pptx_of_canvas_with_fonts' | 'enable_aspose_pptx_of_canvas' | 'enable_canvas_control_bars_collapse' | 'enable_rep_app_visibility_order' | 'enable_file_sharing_print_permissions' | 'enable_section_sharing_print_permissions' | 'enable_marketplace_tab' | 'enable_sfdc_account_visibility_for_canvases' | 'sfdc_offline_enabled' | 'enable_granular_permissions' | 'enable_hub_collections' | 'enable_hub_recommended_smart_folder' | 'enable_custom_user_properties';
|
|
2
2
|
export type LaunchDarklyNumberFlagKey = 'canvas_section_selector_page_size' | 'canvas_section_selector_selected_items_with_thumbnail_size';
|
|
3
3
|
/** How PIA Search serves inference (PIT-6863). */
|
|
4
4
|
export type PiaSearchMode = 'off' | 'on_device' | 'online';
|
|
@@ -29,8 +29,6 @@ declare const _LaunchDarklyStringFlags: {
|
|
|
29
29
|
readonly pspdfkit_client_version: readonly ["", "pspdfkit-web/2024.6.0/pspdfkit.js", "pspdfkit-web/1.14.0/nutrient-viewer.js"];
|
|
30
30
|
readonly slotty_ui_remote_script_url: readonly ["https://anyvalidurl.xyz", ""];
|
|
31
31
|
readonly dsr_remote_script_url: readonly ["https://anyvalidurl.xyz", ""];
|
|
32
|
-
readonly ai_image_generation_model: readonly ["minimax/image-01", ""];
|
|
33
|
-
readonly ai_video_generation_model: readonly ["minimax/video-01", ""];
|
|
34
32
|
readonly sharebox_format: readonly ["content-grid", "content-grid-default", "collection-player-default"];
|
|
35
33
|
};
|
|
36
34
|
type LaunchDarklyStringFlagValue<K extends LaunchDarklyStringFlagKey = LaunchDarklyStringFlagKey> = K extends LaunchDarklyStringFlagKey ? (typeof _LaunchDarklyStringFlags)[K][number] : never;
|
|
@@ -10,6 +10,7 @@ export type ContentMatchRule = {
|
|
|
10
10
|
target_metadata_key: string;
|
|
11
11
|
required?: boolean;
|
|
12
12
|
};
|
|
13
|
+
export type FullscreenMode = 'focus' | 'fullscreen';
|
|
13
14
|
type SmartFolderRuleAttribute = {
|
|
14
15
|
name: string;
|
|
15
16
|
type: 'string' | 'boolean' | 'number' | 'date' | 'array';
|
|
@@ -37,6 +38,10 @@ export type OrganizationSettings = {
|
|
|
37
38
|
enable_read_only_canvas_creation_account?: boolean;
|
|
38
39
|
scribble_file_renderer?: 'image' | 'pdfjs' | 'pspdfkit';
|
|
39
40
|
enable_wizard_preview_button?: boolean;
|
|
41
|
+
enable_edit_opens_completion_wizard?: boolean;
|
|
42
|
+
enable_react_completion_wizard?: boolean;
|
|
43
|
+
enable_toc_open_by_default?: boolean;
|
|
44
|
+
use_canvas_exit_confirmation?: boolean;
|
|
40
45
|
locks_polling_interval?: number;
|
|
41
46
|
shared_link?: {
|
|
42
47
|
title?: string;
|
|
@@ -117,15 +122,20 @@ export type OrganizationSettings = {
|
|
|
117
122
|
location_prompt_message?: string;
|
|
118
123
|
use_collection_player_with_annotations?: boolean;
|
|
119
124
|
disable_core_canvas_metadata?: boolean;
|
|
125
|
+
enable_account_widgets?: boolean;
|
|
120
126
|
enable_folder_description_via_name?: boolean;
|
|
121
127
|
enable_download_original_file_in_impact?: boolean;
|
|
122
128
|
alternative_canvas_fullscreen?: boolean;
|
|
129
|
+
enable_impact_web_presentation_browser_fullscreen?: boolean;
|
|
130
|
+
default_presentation_fullscreen_mode?: FullscreenMode;
|
|
123
131
|
enable_presentation_annotations?: boolean;
|
|
124
132
|
max_files_limit?: number;
|
|
125
133
|
is_meeting_bar_account_selection_disabled?: boolean;
|
|
126
134
|
meeting_bar_show_account_context?: 'off' | 'no-call-only' | 'always';
|
|
127
135
|
meeting_bar_allow_attendee_edit_on_existing_events?: boolean;
|
|
128
136
|
disable_postcall?: boolean;
|
|
137
|
+
preserve_account_after_call_stop?: boolean;
|
|
138
|
+
meeting_bar_show_meetings?: boolean;
|
|
129
139
|
launch_in_present_mode_on_creation?: boolean;
|
|
130
140
|
slotty_ui_route_config?: {
|
|
131
141
|
name: string;
|
package/lib/types/sfdc.d.ts
CHANGED
|
@@ -96,6 +96,21 @@ export type SfContact = {
|
|
|
96
96
|
MailingAddress?: string;
|
|
97
97
|
Phone?: string;
|
|
98
98
|
};
|
|
99
|
+
/**
|
|
100
|
+
* Meeting-bar contacts live in a dual id-space: `Id` is the roster record the
|
|
101
|
+
* user picked — a standard Contact (`003…`) when the org's
|
|
102
|
+
* `contact_visibility_query` targets Contact, or a custom-object record (e.g.
|
|
103
|
+
* Demant's `Contact_Customer_Detail__c`, `a1i…`). `ContactMirrorId` is the
|
|
104
|
+
* standard Contact (`003…`) the roster record mirrors (its `Contact__r`
|
|
105
|
+
* lookup), when known — the only id that may ever be written to
|
|
106
|
+
* `Event.WhoId` / `EventWhoIds`. For standard-Contact rosters the roster id IS
|
|
107
|
+
* the mirror id. Hoisted in slotty-ui-ng's `resolveCustomAccountRelation`;
|
|
108
|
+
* synthetic (never written back to Salesforce), deliberately not `__c`-suffixed
|
|
109
|
+
* so it can't collide with a real custom field API name. PIT-7250.
|
|
110
|
+
*/
|
|
111
|
+
export type SfRosterContact = SfContact & {
|
|
112
|
+
ContactMirrorId?: string | null;
|
|
113
|
+
};
|
|
99
114
|
export interface SfContactBasic {
|
|
100
115
|
AccountId: string;
|
|
101
116
|
Email: string;
|