@memberjunction/core-entities 6.2.0-edge.3 → 6.2.0-edge.4
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/dist/.tsbuildinfo +1 -1
- package/dist/custom/ConversationForkAccess.d.ts +15 -0
- package/dist/custom/ConversationForkAccess.d.ts.map +1 -0
- package/dist/custom/ConversationForkAccess.js +28 -0
- package/dist/custom/ConversationForkAccess.js.map +1 -0
- package/dist/custom/ConversationWriteAccess.d.ts +16 -0
- package/dist/custom/ConversationWriteAccess.d.ts.map +1 -0
- package/dist/custom/ConversationWriteAccess.js +34 -0
- package/dist/custom/ConversationWriteAccess.js.map +1 -0
- package/dist/custom/MJConversationBranchEntityExtended.d.ts +30 -0
- package/dist/custom/MJConversationBranchEntityExtended.d.ts.map +1 -0
- package/dist/custom/MJConversationBranchEntityExtended.js +120 -0
- package/dist/custom/MJConversationBranchEntityExtended.js.map +1 -0
- package/dist/custom/MJConversationDetailEntityExtended.d.ts.map +1 -1
- package/dist/custom/MJConversationDetailEntityExtended.js +15 -25
- package/dist/custom/MJConversationDetailEntityExtended.js.map +1 -1
- package/dist/custom/MJDashboardEntityExtended.d.ts.map +1 -1
- package/dist/custom/MJDashboardEntityExtended.js +3 -0
- package/dist/custom/MJDashboardEntityExtended.js.map +1 -1
- package/dist/custom/ResourcePermissions/ResourcePermissionEngine.d.ts.map +1 -1
- package/dist/custom/ResourcePermissions/ResourcePermissionEngine.js +14 -13
- package/dist/custom/ResourcePermissions/ResourcePermissionEngine.js.map +1 -1
- package/dist/engines/FileStorageEngine.d.ts +40 -0
- package/dist/engines/FileStorageEngine.d.ts.map +1 -1
- package/dist/engines/FileStorageEngine.js +49 -0
- package/dist/engines/FileStorageEngine.js.map +1 -1
- package/dist/engines/UserInfoEngine.d.ts +16 -10
- package/dist/engines/UserInfoEngine.d.ts.map +1 -1
- package/dist/engines/UserInfoEngine.js +35 -25
- package/dist/engines/UserInfoEngine.js.map +1 -1
- package/dist/engines/artifacts.d.ts.map +1 -1
- package/dist/engines/artifacts.js +1 -0
- package/dist/engines/artifacts.js.map +1 -1
- package/dist/engines/conversations.d.ts +359 -34
- package/dist/engines/conversations.d.ts.map +1 -1
- package/dist/engines/conversations.js +611 -57
- package/dist/engines/conversations.js.map +1 -1
- package/dist/generated/entities/__mj.d.ts +1730 -190
- package/dist/generated/entities/__mj.d.ts.map +1 -1
- package/dist/generated/entities/__mj.js +696 -0
- package/dist/generated/entities/__mj.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/readme.md +1 -1
|
@@ -8588,6 +8588,53 @@ export declare const MJConversationArtifactSchema: z.ZodObject<{
|
|
|
8588
8588
|
SharingScope?: "None" | "Everyone" | "Public" | "SpecificUsers";
|
|
8589
8589
|
}>;
|
|
8590
8590
|
export type MJConversationArtifactEntityType = z.infer<typeof MJConversationArtifactSchema>;
|
|
8591
|
+
/**
|
|
8592
|
+
* zod schema definition for the entity MJ: Conversation Branches
|
|
8593
|
+
*/
|
|
8594
|
+
export declare const MJConversationBranchSchema: z.ZodObject<{
|
|
8595
|
+
ID: z.ZodString;
|
|
8596
|
+
ConversationID: z.ZodString;
|
|
8597
|
+
ParentBranchID: z.ZodNullable<z.ZodString>;
|
|
8598
|
+
ForkFromSequence: z.ZodNullable<z.ZodNumber>;
|
|
8599
|
+
Name: z.ZodNullable<z.ZodString>;
|
|
8600
|
+
Kind: z.ZodUnion<[z.ZodLiteral<"Edit">, z.ZodLiteral<"Fork">, z.ZodLiteral<"Regenerate">]>;
|
|
8601
|
+
SourceDetailID: z.ZodNullable<z.ZodString>;
|
|
8602
|
+
UserID: z.ZodString;
|
|
8603
|
+
__mj_CreatedAt: z.ZodDate;
|
|
8604
|
+
__mj_UpdatedAt: z.ZodDate;
|
|
8605
|
+
Conversation: z.ZodNullable<z.ZodString>;
|
|
8606
|
+
ParentBranch: z.ZodNullable<z.ZodString>;
|
|
8607
|
+
User: z.ZodString;
|
|
8608
|
+
}, "strip", z.ZodTypeAny, {
|
|
8609
|
+
ID?: string;
|
|
8610
|
+
Name?: string;
|
|
8611
|
+
__mj_CreatedAt?: Date;
|
|
8612
|
+
__mj_UpdatedAt?: Date;
|
|
8613
|
+
UserID?: string;
|
|
8614
|
+
User?: string;
|
|
8615
|
+
Conversation?: string;
|
|
8616
|
+
ConversationID?: string;
|
|
8617
|
+
ParentBranchID?: string;
|
|
8618
|
+
ForkFromSequence?: number;
|
|
8619
|
+
Kind?: "Edit" | "Fork" | "Regenerate";
|
|
8620
|
+
SourceDetailID?: string;
|
|
8621
|
+
ParentBranch?: string;
|
|
8622
|
+
}, {
|
|
8623
|
+
ID?: string;
|
|
8624
|
+
Name?: string;
|
|
8625
|
+
__mj_CreatedAt?: Date;
|
|
8626
|
+
__mj_UpdatedAt?: Date;
|
|
8627
|
+
UserID?: string;
|
|
8628
|
+
User?: string;
|
|
8629
|
+
Conversation?: string;
|
|
8630
|
+
ConversationID?: string;
|
|
8631
|
+
ParentBranchID?: string;
|
|
8632
|
+
ForkFromSequence?: number;
|
|
8633
|
+
Kind?: "Edit" | "Fork" | "Regenerate";
|
|
8634
|
+
SourceDetailID?: string;
|
|
8635
|
+
ParentBranch?: string;
|
|
8636
|
+
}>;
|
|
8637
|
+
export type MJConversationBranchEntityType = z.infer<typeof MJConversationBranchSchema>;
|
|
8591
8638
|
/**
|
|
8592
8639
|
* zod schema definition for the entity MJ: Conversation Compaction Runs
|
|
8593
8640
|
*/
|
|
@@ -8792,6 +8839,8 @@ export declare const MJConversationDetailSchema: z.ZodObject<{
|
|
|
8792
8839
|
UtteranceEndMs: z.ZodNullable<z.ZodNumber>;
|
|
8793
8840
|
MediaType: z.ZodNullable<z.ZodUnion<[z.ZodLiteral<"Audio">, z.ZodLiteral<"Text">, z.ZodLiteral<"Video">]>>;
|
|
8794
8841
|
Sequence: z.ZodNumber;
|
|
8842
|
+
BranchID: z.ZodNullable<z.ZodString>;
|
|
8843
|
+
ReplacedAt: z.ZodNullable<z.ZodDate>;
|
|
8795
8844
|
Conversation: z.ZodNullable<z.ZodString>;
|
|
8796
8845
|
User: z.ZodNullable<z.ZodString>;
|
|
8797
8846
|
Artifact: z.ZodNullable<z.ZodString>;
|
|
@@ -8799,6 +8848,7 @@ export declare const MJConversationDetailSchema: z.ZodObject<{
|
|
|
8799
8848
|
Parent: z.ZodNullable<z.ZodString>;
|
|
8800
8849
|
Agent: z.ZodNullable<z.ZodString>;
|
|
8801
8850
|
TestRun: z.ZodNullable<z.ZodString>;
|
|
8851
|
+
Branch: z.ZodNullable<z.ZodString>;
|
|
8802
8852
|
RootParentID: z.ZodNullable<z.ZodString>;
|
|
8803
8853
|
ParentIDDepth: z.ZodNullable<z.ZodNumber>;
|
|
8804
8854
|
ParentIDPath: z.ZodNullable<z.ZodString>;
|
|
@@ -8850,6 +8900,9 @@ export declare const MJConversationDetailSchema: z.ZodObject<{
|
|
|
8850
8900
|
UtteranceStartMs?: number;
|
|
8851
8901
|
UtteranceEndMs?: number;
|
|
8852
8902
|
MediaType?: "Audio" | "Text" | "Video";
|
|
8903
|
+
BranchID?: string;
|
|
8904
|
+
ReplacedAt?: Date;
|
|
8905
|
+
Branch?: string;
|
|
8853
8906
|
}, {
|
|
8854
8907
|
ID?: string;
|
|
8855
8908
|
__mj_CreatedAt?: Date;
|
|
@@ -8896,6 +8949,9 @@ export declare const MJConversationDetailSchema: z.ZodObject<{
|
|
|
8896
8949
|
UtteranceStartMs?: number;
|
|
8897
8950
|
UtteranceEndMs?: number;
|
|
8898
8951
|
MediaType?: "Audio" | "Text" | "Video";
|
|
8952
|
+
BranchID?: string;
|
|
8953
|
+
ReplacedAt?: Date;
|
|
8954
|
+
Branch?: string;
|
|
8899
8955
|
}>;
|
|
8900
8956
|
export type MJConversationDetailEntityType = z.infer<typeof MJConversationDetailSchema>;
|
|
8901
8957
|
/**
|
|
@@ -14813,12 +14869,12 @@ export declare const MJMagicLinkInviteSchema: z.ZodObject<{
|
|
|
14813
14869
|
ApplicationID?: string;
|
|
14814
14870
|
Application?: string;
|
|
14815
14871
|
ResourceType?: string;
|
|
14872
|
+
Kind?: "anonymous-embed" | "app-session" | "resource-share";
|
|
14816
14873
|
TokenHash?: string;
|
|
14817
14874
|
ConsumedAt?: Date;
|
|
14818
14875
|
MaxUses?: number;
|
|
14819
14876
|
UseCount?: number;
|
|
14820
14877
|
IdentityMode?: "anonymous" | "email";
|
|
14821
|
-
Kind?: "anonymous-embed" | "app-session" | "resource-share";
|
|
14822
14878
|
ResourceTypeID?: string;
|
|
14823
14879
|
ResourceID?: string;
|
|
14824
14880
|
}, {
|
|
@@ -14835,12 +14891,12 @@ export declare const MJMagicLinkInviteSchema: z.ZodObject<{
|
|
|
14835
14891
|
ApplicationID?: string;
|
|
14836
14892
|
Application?: string;
|
|
14837
14893
|
ResourceType?: string;
|
|
14894
|
+
Kind?: "anonymous-embed" | "app-session" | "resource-share";
|
|
14838
14895
|
TokenHash?: string;
|
|
14839
14896
|
ConsumedAt?: Date;
|
|
14840
14897
|
MaxUses?: number;
|
|
14841
14898
|
UseCount?: number;
|
|
14842
14899
|
IdentityMode?: "anonymous" | "email";
|
|
14843
|
-
Kind?: "anonymous-embed" | "app-session" | "resource-share";
|
|
14844
14900
|
ResourceTypeID?: string;
|
|
14845
14901
|
ResourceID?: string;
|
|
14846
14902
|
}>;
|
|
@@ -18684,6 +18740,62 @@ export declare const MJSchemaInfoSchema: z.ZodObject<{
|
|
|
18684
18740
|
EntityNameSuffix?: string;
|
|
18685
18741
|
}>;
|
|
18686
18742
|
export type MJSchemaInfoEntityType = z.infer<typeof MJSchemaInfoSchema>;
|
|
18743
|
+
/**
|
|
18744
|
+
* zod schema definition for the entity MJ: Scoped Notification Configs
|
|
18745
|
+
*/
|
|
18746
|
+
export declare const MJScopedNotificationConfigSchema: z.ZodObject<{
|
|
18747
|
+
ID: z.ZodString;
|
|
18748
|
+
NotificationTypeID: z.ZodString;
|
|
18749
|
+
Description: z.ZodNullable<z.ZodString>;
|
|
18750
|
+
PrimaryScopeEntityID: z.ZodNullable<z.ZodString>;
|
|
18751
|
+
PrimaryScopeRecordID: z.ZodNullable<z.ZodString>;
|
|
18752
|
+
SecondaryScopes: z.ZodNullable<z.ZodString>;
|
|
18753
|
+
InApp: z.ZodNullable<z.ZodUnion<[z.ZodLiteral<"Allow">, z.ZodLiteral<"Deny">]>>;
|
|
18754
|
+
Email: z.ZodNullable<z.ZodUnion<[z.ZodLiteral<"Allow">, z.ZodLiteral<"Deny">]>>;
|
|
18755
|
+
SMS: z.ZodNullable<z.ZodUnion<[z.ZodLiteral<"Allow">, z.ZodLiteral<"Deny">]>>;
|
|
18756
|
+
IsLocked: z.ZodBoolean;
|
|
18757
|
+
Priority: z.ZodNumber;
|
|
18758
|
+
Status: z.ZodUnion<[z.ZodLiteral<"Active">, z.ZodLiteral<"Archived">, z.ZodLiteral<"Provisional">]>;
|
|
18759
|
+
__mj_CreatedAt: z.ZodDate;
|
|
18760
|
+
__mj_UpdatedAt: z.ZodDate;
|
|
18761
|
+
NotificationType: z.ZodString;
|
|
18762
|
+
PrimaryScopeEntity: z.ZodNullable<z.ZodString>;
|
|
18763
|
+
}, "strip", z.ZodTypeAny, {
|
|
18764
|
+
ID?: string;
|
|
18765
|
+
Description?: string;
|
|
18766
|
+
__mj_CreatedAt?: Date;
|
|
18767
|
+
__mj_UpdatedAt?: Date;
|
|
18768
|
+
Status?: "Active" | "Archived" | "Provisional";
|
|
18769
|
+
Priority?: number;
|
|
18770
|
+
PrimaryScopeEntityID?: string;
|
|
18771
|
+
PrimaryScopeRecordID?: string;
|
|
18772
|
+
SecondaryScopes?: string;
|
|
18773
|
+
PrimaryScopeEntity?: string;
|
|
18774
|
+
Email?: "Allow" | "Deny";
|
|
18775
|
+
IsLocked?: boolean;
|
|
18776
|
+
SMS?: "Allow" | "Deny";
|
|
18777
|
+
NotificationTypeID?: string;
|
|
18778
|
+
InApp?: "Allow" | "Deny";
|
|
18779
|
+
NotificationType?: string;
|
|
18780
|
+
}, {
|
|
18781
|
+
ID?: string;
|
|
18782
|
+
Description?: string;
|
|
18783
|
+
__mj_CreatedAt?: Date;
|
|
18784
|
+
__mj_UpdatedAt?: Date;
|
|
18785
|
+
Status?: "Active" | "Archived" | "Provisional";
|
|
18786
|
+
Priority?: number;
|
|
18787
|
+
PrimaryScopeEntityID?: string;
|
|
18788
|
+
PrimaryScopeRecordID?: string;
|
|
18789
|
+
SecondaryScopes?: string;
|
|
18790
|
+
PrimaryScopeEntity?: string;
|
|
18791
|
+
Email?: "Allow" | "Deny";
|
|
18792
|
+
IsLocked?: boolean;
|
|
18793
|
+
SMS?: "Allow" | "Deny";
|
|
18794
|
+
NotificationTypeID?: string;
|
|
18795
|
+
InApp?: "Allow" | "Deny";
|
|
18796
|
+
NotificationType?: string;
|
|
18797
|
+
}>;
|
|
18798
|
+
export type MJScopedNotificationConfigEntityType = z.infer<typeof MJScopedNotificationConfigSchema>;
|
|
18687
18799
|
/**
|
|
18688
18800
|
* zod schema definition for the entity MJ: Scoped Prompt Configs
|
|
18689
18801
|
*/
|
|
@@ -21153,24 +21265,24 @@ export declare const MJUserNotificationPreferenceSchema: z.ZodObject<{
|
|
|
21153
21265
|
__mj_UpdatedAt?: Date;
|
|
21154
21266
|
UserID?: string;
|
|
21155
21267
|
User?: string;
|
|
21156
|
-
Enabled?: boolean;
|
|
21157
21268
|
NotificationTypeID?: string;
|
|
21269
|
+
NotificationType?: string;
|
|
21270
|
+
Enabled?: boolean;
|
|
21158
21271
|
InAppEnabled?: boolean;
|
|
21159
21272
|
EmailEnabled?: boolean;
|
|
21160
21273
|
SMSEnabled?: boolean;
|
|
21161
|
-
NotificationType?: string;
|
|
21162
21274
|
}, {
|
|
21163
21275
|
ID?: string;
|
|
21164
21276
|
__mj_CreatedAt?: Date;
|
|
21165
21277
|
__mj_UpdatedAt?: Date;
|
|
21166
21278
|
UserID?: string;
|
|
21167
21279
|
User?: string;
|
|
21168
|
-
Enabled?: boolean;
|
|
21169
21280
|
NotificationTypeID?: string;
|
|
21281
|
+
NotificationType?: string;
|
|
21282
|
+
Enabled?: boolean;
|
|
21170
21283
|
InAppEnabled?: boolean;
|
|
21171
21284
|
EmailEnabled?: boolean;
|
|
21172
21285
|
SMSEnabled?: boolean;
|
|
21173
|
-
NotificationType?: string;
|
|
21174
21286
|
}>;
|
|
21175
21287
|
export type MJUserNotificationPreferenceEntityType = z.infer<typeof MJUserNotificationPreferenceSchema>;
|
|
21176
21288
|
/**
|
|
@@ -21835,6 +21947,7 @@ export declare const MJUserSchema: z.ZodObject<{
|
|
|
21835
21947
|
__mj_UpdatedAt: z.ZodDate;
|
|
21836
21948
|
UserImageURL: z.ZodNullable<z.ZodString>;
|
|
21837
21949
|
UserImageIconClass: z.ZodNullable<z.ZodString>;
|
|
21950
|
+
IsTemplate: z.ZodBoolean;
|
|
21838
21951
|
FirstLast: z.ZodNullable<z.ZodString>;
|
|
21839
21952
|
EmployeeFirstLast: z.ZodNullable<z.ZodString>;
|
|
21840
21953
|
EmployeeEmail: z.ZodNullable<z.ZodString>;
|
|
@@ -21859,6 +21972,7 @@ export declare const MJUserSchema: z.ZodObject<{
|
|
|
21859
21972
|
LinkedEntityRecordID?: string;
|
|
21860
21973
|
UserImageURL?: string;
|
|
21861
21974
|
UserImageIconClass?: string;
|
|
21975
|
+
IsTemplate?: boolean;
|
|
21862
21976
|
EmployeeFirstLast?: string;
|
|
21863
21977
|
EmployeeEmail?: string;
|
|
21864
21978
|
EmployeeTitle?: string;
|
|
@@ -21882,6 +21996,7 @@ export declare const MJUserSchema: z.ZodObject<{
|
|
|
21882
21996
|
LinkedEntityRecordID?: string;
|
|
21883
21997
|
UserImageURL?: string;
|
|
21884
21998
|
UserImageIconClass?: string;
|
|
21999
|
+
IsTemplate?: boolean;
|
|
21885
22000
|
EmployeeFirstLast?: string;
|
|
21886
22001
|
EmployeeEmail?: string;
|
|
21887
22002
|
EmployeeTitle?: string;
|
|
@@ -23271,8 +23386,8 @@ export declare class MJAIAgentCategoryEntity extends BaseEntity<MJAIAgentCategor
|
|
|
23271
23386
|
*
|
|
23272
23387
|
* Distinct from the channel's `ConfigSchema` column, which validates the *per-session*
|
|
23273
23388
|
* `AIAgentSessionChannel.Config` state-of-record. This bag is the channel-definition's
|
|
23274
|
-
* own UI chrome, read in-memory by the host when rendering channel tabs
|
|
23275
|
-
* no DB change — add future chrome fields here.
|
|
23389
|
+
* own UI chrome, read in-memory by the host when rendering channel tabs and placing the
|
|
23390
|
+
* channel's surface. Extensible with no DB change — add future chrome fields here.
|
|
23276
23391
|
*/
|
|
23277
23392
|
export interface MJAIAgentChannelEntity_IChannelUIConfig {
|
|
23278
23393
|
/** Human label for the tab/chrome. Null → fall back to the channel's Name. */
|
|
@@ -23285,6 +23400,17 @@ export interface MJAIAgentChannelEntity_IChannelUIConfig {
|
|
|
23285
23400
|
Icon?: string | null;
|
|
23286
23401
|
/** Display order within a group/list. */
|
|
23287
23402
|
SortOrder?: number | null;
|
|
23403
|
+
/**
|
|
23404
|
+
* Where the channel's surface shows when a call starts: "stage" fills the call, "pip" floats in a
|
|
23405
|
+
* picture-in-picture box over it, "tab" sits on its tab in the side panel, "hidden" shows nowhere until
|
|
23406
|
+
* the user moves it. Null → "tab". The user's own move wins over this, when AllowedPlacements allows it.
|
|
23407
|
+
*/
|
|
23408
|
+
Placement?: 'stage' | 'pip' | 'tab' | 'hidden' | null;
|
|
23409
|
+
/**
|
|
23410
|
+
* Where the user may move the channel's surface. Null or empty → anywhere. A Placement missing from
|
|
23411
|
+
* this list is replaced by the first placement listed here.
|
|
23412
|
+
*/
|
|
23413
|
+
AllowedPlacements?: Array<'stage' | 'pip' | 'tab' | 'hidden'> | null;
|
|
23288
23414
|
}
|
|
23289
23415
|
/**
|
|
23290
23416
|
* MJ: AI Agent Channels - strongly typed entity sub-class
|
|
@@ -25715,6 +25841,16 @@ export interface MJAIAgentPersonaEntity_IAIAgentPersonaStyleOverride {
|
|
|
25715
25841
|
Tone?: string;
|
|
25716
25842
|
/** Optional override for the persona's SpeakingStyle. */
|
|
25717
25843
|
SpeakingStyle?: string;
|
|
25844
|
+
/**
|
|
25845
|
+
* Optional override for the persona's Visual: how the agent's video shows in the call. A member set here wins over
|
|
25846
|
+
* the persona's.
|
|
25847
|
+
*/
|
|
25848
|
+
Visual?: {
|
|
25849
|
+
/** How much of the avatar the tile frames. */
|
|
25850
|
+
Framing?: 'head' | 'shoulders' | 'waist';
|
|
25851
|
+
/** The accent of the ring that frames the tile while the agent speaks: a design-token name, never a color value. */
|
|
25852
|
+
AccentToken?: string;
|
|
25853
|
+
};
|
|
25718
25854
|
/** Open extension point for additional descriptor overrides. */
|
|
25719
25855
|
[key: string]: unknown;
|
|
25720
25856
|
}
|
|
@@ -32991,7 +33127,8 @@ export declare class MJAIModelPriceUnitTypeEntity extends BaseEntity<MJAIModelPr
|
|
|
32991
33127
|
* Two kinds of type live here, and the distinction is the whole point of the file:
|
|
32992
33128
|
*
|
|
32993
33129
|
* 1. **Shared modality sections** (`MJAIModelTypeEntity_LLMConfigurationSettings`, `MJAIModelTypeEntity_RealtimeConfigurationSettings`,
|
|
32994
|
-
* `MJAIModelTypeEntity_VisionConfigurationSettings`, `MJAIModelTypeEntity_AudioConfigurationSettings`, `MJAIModelTypeEntity_DecisionConfigurationSettings
|
|
33130
|
+
* `MJAIModelTypeEntity_VisionConfigurationSettings`, `MJAIModelTypeEntity_AudioConfigurationSettings`, `MJAIModelTypeEntity_DecisionConfigurationSettings`,
|
|
33131
|
+
* `MJAIModelTypeEntity_PrivacyConfigurationSettings`) —
|
|
32995
33132
|
* what "the LLM configuration"
|
|
32996
33133
|
* MEANS, defined once and reused by every layer that carries a configuration bag.
|
|
32997
33134
|
* 2. **Per-table outer types** (`MJAIModelTypeEntity_IAIModelConfiguration`, `MJAIModelTypeEntity_IAIPromptConfiguration`,
|
|
@@ -33017,12 +33154,13 @@ export declare class MJAIModelPriceUnitTypeEntity extends BaseEntity<MJAIModelPr
|
|
|
33017
33154
|
* therefore has to be self-contained — a definition cannot `import` a sibling, and `@file:`
|
|
33018
33155
|
* substitutes a whole file rather than splicing one into another. Keeping every AI configuration
|
|
33019
33156
|
* type in ONE file is what makes a shared section possible at all; the cost is that each of the
|
|
33020
|
-
*
|
|
33157
|
+
* six entities emits the full (prefixed) set, including outer types it does not use.
|
|
33021
33158
|
*
|
|
33022
33159
|
* **Lockstep contract**: this file is the JSONType SOURCE; its package-side mirror is
|
|
33023
33160
|
* `packages/AI/Core/src/generic/modelConfiguration.ts` in `@memberjunction/ai`, which runtime code
|
|
33024
|
-
* compiles against. Keep the two in step when
|
|
33025
|
-
* `IAgentSettings` follows with
|
|
33161
|
+
* compiles against (the track types mirror its `realtimeTracks.ts`). Keep the two in step when
|
|
33162
|
+
* adding a section or property — the same pact `IAgentSettings` follows with
|
|
33163
|
+
* `@memberjunction/ai-core-plus`. Core's `modelConfiguration.test.ts` fails when they differ.
|
|
33026
33164
|
*
|
|
33027
33165
|
* **Boundary rule**: anything the engine filters, sorts, or joins on stays a COLUMN (`PowerRank`,
|
|
33028
33166
|
* `IsActive`, `Priority`, `Status` — SQL cannot cheaply predicate into this bag); anything a driver
|
|
@@ -33099,6 +33237,21 @@ export interface MJAIModelTypeEntity_LLMConfigurationSettings {
|
|
|
33099
33237
|
*/
|
|
33100
33238
|
PrefixPromptCache?: boolean | null;
|
|
33101
33239
|
}
|
|
33240
|
+
/**
|
|
33241
|
+
* MJ-normalized turn-detection mode, provider-neutral so a shared catalog is safe on every provider:
|
|
33242
|
+
* - `'default'` — let the provider profile decide (today's behavior).
|
|
33243
|
+
* - `'serverVad'` — classic silence-based server VAD.
|
|
33244
|
+
* - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
|
|
33245
|
+
* - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
|
|
33246
|
+
* to; the forward slot for full-duplex reasoning voice models.
|
|
33247
|
+
*/
|
|
33248
|
+
export type MJAIModelTypeEntity_RealtimeTurnDetectionMode = 'default' | 'serverVad' | 'semanticVad' | 'native';
|
|
33249
|
+
/**
|
|
33250
|
+
* What a turn's input may include (distinct from detection, which decides when a turn ends):
|
|
33251
|
+
* - `'audioActivityOnly'` — audio activity only; video frames are sent deliberately.
|
|
33252
|
+
* - `'audioActivityAndAllVideo'` — audio activity plus every video frame (Gemini 3.8 Live's default).
|
|
33253
|
+
*/
|
|
33254
|
+
export type MJAIModelTypeEntity_RealtimeTurnCoverage = 'audioActivityOnly' | 'audioActivityAndAllVideo';
|
|
33102
33255
|
/**
|
|
33103
33256
|
* MJ-normalized turn-detection settings for realtime (speech-to-speech) models. Every field is
|
|
33104
33257
|
* optional; absent fields contribute nothing. Provider profiles translate this vocabulary to their
|
|
@@ -33106,39 +33259,139 @@ export interface MJAIModelTypeEntity_LLMConfigurationSettings {
|
|
|
33106
33259
|
* default — a wrong inherited value degrades safely, it never rejects a session.
|
|
33107
33260
|
*/
|
|
33108
33261
|
export interface MJAIModelTypeEntity_RealtimeTurnDetectionSettings {
|
|
33109
|
-
/**
|
|
33110
|
-
|
|
33111
|
-
* - `'serverVad'` — classic silence-based server VAD.
|
|
33112
|
-
* - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
|
|
33113
|
-
* - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
|
|
33114
|
-
* to; the forward slot for full-duplex reasoning voice models.
|
|
33115
|
-
*/
|
|
33116
|
-
Mode?: 'default' | 'serverVad' | 'semanticVad' | 'native' | null;
|
|
33262
|
+
/** The normalized mode; absent = `'default'`. */
|
|
33263
|
+
Mode?: MJAIModelTypeEntity_RealtimeTurnDetectionMode;
|
|
33117
33264
|
/** Semantic-VAD aggressiveness (OpenAI `eagerness`); ignored without a mapping. */
|
|
33118
|
-
Eagerness?: 'low' | 'auto' | 'high'
|
|
33265
|
+
Eagerness?: 'low' | 'auto' | 'high';
|
|
33119
33266
|
/** Server-VAD activation threshold (0–1); ignored without a mapping. */
|
|
33120
|
-
Threshold?: number
|
|
33267
|
+
Threshold?: number;
|
|
33121
33268
|
/** Server-VAD trailing-silence duration in ms; ignored without a mapping. */
|
|
33122
|
-
SilenceDurationMs?: number
|
|
33269
|
+
SilenceDurationMs?: number;
|
|
33270
|
+
/**
|
|
33271
|
+
* What a turn's input may include. Declaring it keeps Gemini 3.8 Live's every-frame default (billed,
|
|
33272
|
+
* and consuming context) a decision rather than an inherited cost. Ignored without a mapping.
|
|
33273
|
+
*/
|
|
33274
|
+
Coverage?: MJAIModelTypeEntity_RealtimeTurnCoverage;
|
|
33275
|
+
}
|
|
33276
|
+
/** Which plane handles reasoning: `'local'` (the application/agent loop, the default) or `'remote'`. */
|
|
33277
|
+
export type MJAIModelTypeEntity_RealtimeReasoningPlane = 'local' | 'remote';
|
|
33278
|
+
/** A reasoning effort in MJ's neutral vocabulary; each provider profile maps the values its model accepts. */
|
|
33279
|
+
export type MJAIModelTypeEntity_RealtimeReasoningEffort = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
33280
|
+
/** The remote reasoning target, used when `Plane` is `'remote'`. */
|
|
33281
|
+
export interface MJAIModelTypeEntity_RealtimeRemoteReasoning {
|
|
33282
|
+
/** What the reference denotes: `'model'` (Live, Inworld) or `'hostedAgent'` (ElevenLabs). */
|
|
33283
|
+
Kind?: 'model' | 'hostedAgent';
|
|
33284
|
+
/** The target, e.g. `'gpt-5.6-terra'`, `'anthropic/claude-sonnet-4-6'`, `'MJ Realtime Co-Agent'`. */
|
|
33285
|
+
Ref?: string;
|
|
33286
|
+
/** The target's reasoning effort, for models that support one. */
|
|
33287
|
+
Effort?: MJAIModelTypeEntity_RealtimeReasoningEffort;
|
|
33288
|
+
/** The most output tokens for the remote reasoning pass. */
|
|
33289
|
+
MaxOutputTokens?: number;
|
|
33290
|
+
}
|
|
33291
|
+
/** Reasoning-plane settings for realtime models — dual delegation configuration. */
|
|
33292
|
+
export interface MJAIModelTypeEntity_RealtimeReasoningSettings {
|
|
33293
|
+
/** Absent = `'local'`. Fixed when the session is created. */
|
|
33294
|
+
Plane?: MJAIModelTypeEntity_RealtimeReasoningPlane;
|
|
33295
|
+
/** The remote target when `Plane` is `'remote'`. */
|
|
33296
|
+
Remote?: MJAIModelTypeEntity_RealtimeRemoteReasoning;
|
|
33297
|
+
/**
|
|
33298
|
+
* How hard the model itself reasons (Gemini `thinkingConfig.thinkingLevel`). A profile that cannot
|
|
33299
|
+
* honour the value logs a warning and uses its own default.
|
|
33300
|
+
*/
|
|
33301
|
+
Level?: MJAIModelTypeEntity_RealtimeReasoningEffort;
|
|
33302
|
+
/**
|
|
33303
|
+
* Ask the model for human-readable summaries of its own reasoning (Gemini `includeThoughts`). They
|
|
33304
|
+
* are progress narration, not assistant speech. Absent = off.
|
|
33305
|
+
*/
|
|
33306
|
+
IncludeThoughtSummaries?: boolean;
|
|
33307
|
+
}
|
|
33308
|
+
/** Which way samples flow on a track, relative to the model. */
|
|
33309
|
+
export type MJAIModelTypeEntity_RealtimeTrackDirection = 'inbound' | 'outbound';
|
|
33310
|
+
/** The modalities MJ itself reasons about (cost, consent, transcripts). */
|
|
33311
|
+
export type MJAIModelTypeEntity_RealtimeWellKnownModality = 'audio' | 'video' | 'image' | 'text';
|
|
33312
|
+
/** A modality key: one of the well-known values, or any registered string. */
|
|
33313
|
+
export type MJAIModelTypeEntity_RealtimeModalityKey = MJAIModelTypeEntity_RealtimeWellKnownModality | (string & {});
|
|
33314
|
+
/** How a track's usage is metered. */
|
|
33315
|
+
export type MJAIModelTypeEntity_RealtimeTrackUsageBasis = 'tokens' | 'seconds' | 'frames' | 'bytes';
|
|
33316
|
+
/**
|
|
33317
|
+
* One directional stream of one modality, as {@link MJAIModelTypeEntity_RealtimeConfigurationSettings.RequestedTracks}
|
|
33318
|
+
* requests it. Mirrors the track descriptor in `@memberjunction/ai` (`realtimeTracks.ts`).
|
|
33319
|
+
*/
|
|
33320
|
+
export interface MJAIModelTypeEntity_RealtimeTrackDescriptor {
|
|
33321
|
+
/** The modality this track carries. */
|
|
33322
|
+
Modality: MJAIModelTypeEntity_RealtimeModalityKey;
|
|
33323
|
+
/** Which way samples flow, relative to the model. */
|
|
33324
|
+
Direction: MJAIModelTypeEntity_RealtimeTrackDirection;
|
|
33325
|
+
/** Wire encoding, e.g. `'audio/pcm;rate=16000'` or `'image/jpeg'`; absent = the profile's default. */
|
|
33326
|
+
Encoding?: string;
|
|
33327
|
+
/** Sample or frame cadence: fps for video, Hz for audio. */
|
|
33328
|
+
Rate?: number;
|
|
33329
|
+
/** How this track is metered; absent = the session's own basis. */
|
|
33330
|
+
UsageBasis?: readonly MJAIModelTypeEntity_RealtimeTrackUsageBasis[];
|
|
33331
|
+
/** Whether establishing this track needs an explicit human grant (camera, screen, microphone). */
|
|
33332
|
+
RequiresConsent?: boolean;
|
|
33333
|
+
/** Whether the session needs this track (`true`) or treats it as best-effort (`false`). */
|
|
33334
|
+
Required?: boolean;
|
|
33335
|
+
/** Which source feeds this track, when several streams of one modality and direction can exist. */
|
|
33336
|
+
SourceID?: string;
|
|
33337
|
+
/** A human-readable name for that source ("Whiteboard", "Camera"). */
|
|
33338
|
+
Label?: string;
|
|
33123
33339
|
}
|
|
33124
33340
|
/**
|
|
33125
|
-
*
|
|
33126
|
-
* `'
|
|
33341
|
+
* Which server signal means "the session has gone idle and deferred work may be flushed":
|
|
33342
|
+
* `'turnComplete'` (the default) or `'interactionStatus'`, for models with asynchronous reasoning
|
|
33343
|
+
* whose `turnComplete` arrives while they still reason and call tools.
|
|
33127
33344
|
*/
|
|
33128
|
-
export
|
|
33345
|
+
export type MJAIModelTypeEntity_RealtimeIdleSignal = 'turnComplete' | 'interactionStatus';
|
|
33346
|
+
/** Tool-execution semantics a model permits. Capability declarations, not requests. */
|
|
33347
|
+
export interface MJAIModelTypeEntity_RealtimeToolingSettings {
|
|
33129
33348
|
/**
|
|
33130
|
-
*
|
|
33131
|
-
*
|
|
33132
|
-
* - `'remote'` — delegated to remote model or hosted agent.
|
|
33349
|
+
* Whether synchronous blocking tool execution is legal. Absent = permitted. `false` on models that
|
|
33350
|
+
* reject blocking mode outright (Gemini 3.8 Live Extended Thinking).
|
|
33133
33351
|
*/
|
|
33134
|
-
|
|
33135
|
-
/**
|
|
33136
|
-
|
|
33137
|
-
|
|
33138
|
-
|
|
33139
|
-
|
|
33140
|
-
|
|
33141
|
-
|
|
33352
|
+
SupportsBlockingExecution?: boolean;
|
|
33353
|
+
/**
|
|
33354
|
+
* Whether per-function scheduling hints are legal (Gemini `SILENT` / `WHEN_IDLE` / `INTERRUPTED`).
|
|
33355
|
+
* Absent = not supported.
|
|
33356
|
+
*/
|
|
33357
|
+
SupportsScheduling?: boolean;
|
|
33358
|
+
/** Preferred function-calling behavior. */
|
|
33359
|
+
Behavior?: 'BLOCKING' | 'NON_BLOCKING';
|
|
33360
|
+
}
|
|
33361
|
+
/**
|
|
33362
|
+
* One price for a quantity a realtime session produces, in one currency. It applies only when all
|
|
33363
|
+
* three fields are set; a partial price, or a unit or currency the reader does not handle, counts
|
|
33364
|
+
* as no price.
|
|
33365
|
+
*/
|
|
33366
|
+
export interface MJAIModelTypeEntity_RealtimeUnitPrice {
|
|
33367
|
+
/** The amount charged per {@link MJAIModelTypeEntity_RealtimeUnitPrice.Unit}. Never negative. */
|
|
33368
|
+
Price?: number | null;
|
|
33369
|
+
/**
|
|
33370
|
+
* The billing unit, named as in `MJ: AI Model Price Unit Types`. `'Per Minute'`: one minute.
|
|
33371
|
+
* `'Per 1M Tokens'`: one million tokens.
|
|
33372
|
+
*/
|
|
33373
|
+
Unit?: 'Per Minute' | 'Per 1M Tokens' | null;
|
|
33374
|
+
/** ISO 4217 currency code, uppercase (e.g. `USD`), as on `MJ: AI Model Costs`. */
|
|
33375
|
+
Currency?: string | null;
|
|
33376
|
+
}
|
|
33377
|
+
/**
|
|
33378
|
+
* Prices for realtime output that the model's cost rows (`MJ: AI Model Costs`) do not price on
|
|
33379
|
+
* their own; the cost rows stay the authority for token prices. A price belongs to the host that
|
|
33380
|
+
* charges it, so set this on the model-vendor row: a price on the model or the model type would
|
|
33381
|
+
* reach every vendor that serves the model.
|
|
33382
|
+
*/
|
|
33383
|
+
export interface MJAIModelTypeEntity_RealtimePricingSettings {
|
|
33384
|
+
/**
|
|
33385
|
+
* The price of avatar video output, charged on top of the session's token cost. `'Per Minute'`
|
|
33386
|
+
* prices the seconds of avatar video the model generates; `'Per 1M Tokens'` prices the output
|
|
33387
|
+
* tokens the provider counts as video. Set the price and its unit together: the cascade merges
|
|
33388
|
+
* per key, so a layer that sets only one of them keeps the other from the layer below.
|
|
33389
|
+
*
|
|
33390
|
+
* Unverified until checked against Google's bill (#5312): Gemini 3.8 Live on Vertex AI is
|
|
33391
|
+
* seeded at $0.37152 per minute, derived from Google's $1.00 per 1M avatar video output tokens
|
|
33392
|
+
* at 6,192 tokens per second.
|
|
33393
|
+
*/
|
|
33394
|
+
AvatarVideoOutput?: MJAIModelTypeEntity_RealtimeUnitPrice | null;
|
|
33142
33395
|
}
|
|
33143
33396
|
/** Realtime (speech-to-speech) knobs. */
|
|
33144
33397
|
export interface MJAIModelTypeEntity_RealtimeConfigurationSettings {
|
|
@@ -33152,7 +33405,31 @@ export interface MJAIModelTypeEntity_RealtimeConfigurationSettings {
|
|
|
33152
33405
|
/**
|
|
33153
33406
|
* Reasoning plane settings — dual delegation configuration. Absent defaults to `'local'`.
|
|
33154
33407
|
*/
|
|
33155
|
-
Reasoning?: MJAIModelTypeEntity_RealtimeReasoningSettings
|
|
33408
|
+
Reasoning?: MJAIModelTypeEntity_RealtimeReasoningSettings;
|
|
33409
|
+
/**
|
|
33410
|
+
* Whether this realtime model natively supports full-duplex conversational audio
|
|
33411
|
+
* (simultaneous speaking and listening with natural interruptions).
|
|
33412
|
+
*
|
|
33413
|
+
* When true, full-duplex models do not receive turn-taking tools or an energy-VAD floor gate,
|
|
33414
|
+
* allowing the provider's native full-duplex model to handle natural turn transitions.
|
|
33415
|
+
* Cascades AIModelType -> Vendor ModelDefaults -> AIModel -> AIModelVendor.
|
|
33416
|
+
*/
|
|
33417
|
+
FullDuplex?: boolean | null;
|
|
33418
|
+
/** Tool-execution semantics this model permits. Absent = the profile's own defaults. */
|
|
33419
|
+
Tooling?: MJAIModelTypeEntity_RealtimeToolingSettings;
|
|
33420
|
+
/**
|
|
33421
|
+
* Media tracks a session asks the model to establish beyond audio. Absent or empty establishes
|
|
33422
|
+
* audio only, so a video track exists only because something asked for it and never arrives as an
|
|
33423
|
+
* inherited cost. Requests are intersected with what the model supports.
|
|
33424
|
+
*/
|
|
33425
|
+
RequestedTracks?: readonly MJAIModelTypeEntity_RealtimeTrackDescriptor[];
|
|
33426
|
+
/** Which server signal means the session has gone idle. Absent = `'turnComplete'`. */
|
|
33427
|
+
IdleSignal?: MJAIModelTypeEntity_RealtimeIdleSignal;
|
|
33428
|
+
/**
|
|
33429
|
+
* Prices for output the token cost rows do not cover, such as avatar video. Set it on the
|
|
33430
|
+
* model-vendor row.
|
|
33431
|
+
*/
|
|
33432
|
+
Pricing?: MJAIModelTypeEntity_RealtimePricingSettings | null;
|
|
33156
33433
|
}
|
|
33157
33434
|
/** Vision knobs. Reserved — no consumers yet. */
|
|
33158
33435
|
export interface MJAIModelTypeEntity_VisionConfigurationSettings {
|
|
@@ -33162,6 +33439,22 @@ export interface MJAIModelTypeEntity_VisionConfigurationSettings {
|
|
|
33162
33439
|
export interface MJAIModelTypeEntity_AudioConfigurationSettings {
|
|
33163
33440
|
[key: string]: unknown;
|
|
33164
33441
|
}
|
|
33442
|
+
/**
|
|
33443
|
+
* Privacy posture of the model deployment this configuration describes. Set it on the catalog layers
|
|
33444
|
+
* (`MJ: AI Models`, `MJ: AI Model Vendors`, a vendor's `ModelDefaults`): data retention is a property of
|
|
33445
|
+
* how a model is SERVED, so the vendor row is usually where it is true.
|
|
33446
|
+
*/
|
|
33447
|
+
export interface MJAIModelTypeEntity_PrivacyConfigurationSettings {
|
|
33448
|
+
/**
|
|
33449
|
+
* Whether this model is served under a zero-data-retention agreement: the provider does not store
|
|
33450
|
+
* prompts, audio, images or outputs beyond serving the request. `true` is a positive claim that
|
|
33451
|
+
* somebody verified; absent, `null` and `false` all mean "not declared", never "retained", because
|
|
33452
|
+
* an undeclared model is not known to be bad. It is read by realtime channel exposure policy:
|
|
33453
|
+
* an agent that requires zero data retention for a channel's `'state'` or `'pixels'` exposure has
|
|
33454
|
+
* that exposure lowered on any model that does not declare `true` here.
|
|
33455
|
+
*/
|
|
33456
|
+
ZeroDataRetention?: boolean | null;
|
|
33457
|
+
}
|
|
33165
33458
|
/**
|
|
33166
33459
|
* Typed-decision knobs, consumed at call time by the decision runner. They declare what a decision
|
|
33167
33460
|
* model accepts, so an oversized request can be refused with a clear message before the call,
|
|
@@ -33196,6 +33489,8 @@ export interface MJAIModelTypeEntity_IAIModelConfiguration {
|
|
|
33196
33489
|
Audio?: MJAIModelTypeEntity_AudioConfigurationSettings | null;
|
|
33197
33490
|
/** Typed-decision limits. Honored at the catalog layers. */
|
|
33198
33491
|
Decision?: MJAIModelTypeEntity_DecisionConfigurationSettings | null;
|
|
33492
|
+
/** Privacy posture of the model deployment. Honored at the catalog layers. */
|
|
33493
|
+
Privacy?: MJAIModelTypeEntity_PrivacyConfigurationSettings | null;
|
|
33199
33494
|
}
|
|
33200
33495
|
/**
|
|
33201
33496
|
* The `PromptConfiguration` column on `MJ: AI Prompts` — per-prompt call-time knobs, layered ON TOP of the
|
|
@@ -33215,6 +33510,8 @@ export interface MJAIModelTypeEntity_IAIPromptConfiguration {
|
|
|
33215
33510
|
Audio?: MJAIModelTypeEntity_AudioConfigurationSettings | null;
|
|
33216
33511
|
/** Typed-decision limits. Reserved at this layer. */
|
|
33217
33512
|
Decision?: MJAIModelTypeEntity_DecisionConfigurationSettings | null;
|
|
33513
|
+
/** Privacy posture. Reserved at this layer. */
|
|
33514
|
+
Privacy?: MJAIModelTypeEntity_PrivacyConfigurationSettings | null;
|
|
33218
33515
|
}
|
|
33219
33516
|
/**
|
|
33220
33517
|
* The `PromptConfiguration` column on `MJ: AI Prompt Models` — the most specific layer, overriding both
|
|
@@ -33231,6 +33528,8 @@ export interface MJAIModelTypeEntity_IAIPromptModelConfiguration {
|
|
|
33231
33528
|
Audio?: MJAIModelTypeEntity_AudioConfigurationSettings | null;
|
|
33232
33529
|
/** Typed-decision limits. Reserved at this layer. */
|
|
33233
33530
|
Decision?: MJAIModelTypeEntity_DecisionConfigurationSettings | null;
|
|
33531
|
+
/** Privacy posture. Reserved at this layer. */
|
|
33532
|
+
Privacy?: MJAIModelTypeEntity_PrivacyConfigurationSettings | null;
|
|
33234
33533
|
}
|
|
33235
33534
|
/**
|
|
33236
33535
|
* `MJ: AI Vendors . Configuration` — the vendor's own configuration bag. General-purpose: a vendor
|
|
@@ -33382,7 +33681,8 @@ export declare class MJAIModelTypeEntity extends BaseEntity<MJAIModelTypeEntityT
|
|
|
33382
33681
|
* Two kinds of type live here, and the distinction is the whole point of the file:
|
|
33383
33682
|
*
|
|
33384
33683
|
* 1. **Shared modality sections** (`MJAIModelVendorEntity_LLMConfigurationSettings`, `MJAIModelVendorEntity_RealtimeConfigurationSettings`,
|
|
33385
|
-
* `MJAIModelVendorEntity_VisionConfigurationSettings`, `MJAIModelVendorEntity_AudioConfigurationSettings`, `MJAIModelVendorEntity_DecisionConfigurationSettings
|
|
33684
|
+
* `MJAIModelVendorEntity_VisionConfigurationSettings`, `MJAIModelVendorEntity_AudioConfigurationSettings`, `MJAIModelVendorEntity_DecisionConfigurationSettings`,
|
|
33685
|
+
* `MJAIModelVendorEntity_PrivacyConfigurationSettings`) —
|
|
33386
33686
|
* what "the LLM configuration"
|
|
33387
33687
|
* MEANS, defined once and reused by every layer that carries a configuration bag.
|
|
33388
33688
|
* 2. **Per-table outer types** (`MJAIModelVendorEntity_IAIModelConfiguration`, `MJAIModelVendorEntity_IAIPromptConfiguration`,
|
|
@@ -33408,12 +33708,13 @@ export declare class MJAIModelTypeEntity extends BaseEntity<MJAIModelTypeEntityT
|
|
|
33408
33708
|
* therefore has to be self-contained — a definition cannot `import` a sibling, and `@file:`
|
|
33409
33709
|
* substitutes a whole file rather than splicing one into another. Keeping every AI configuration
|
|
33410
33710
|
* type in ONE file is what makes a shared section possible at all; the cost is that each of the
|
|
33411
|
-
*
|
|
33711
|
+
* six entities emits the full (prefixed) set, including outer types it does not use.
|
|
33412
33712
|
*
|
|
33413
33713
|
* **Lockstep contract**: this file is the JSONType SOURCE; its package-side mirror is
|
|
33414
33714
|
* `packages/AI/Core/src/generic/modelConfiguration.ts` in `@memberjunction/ai`, which runtime code
|
|
33415
|
-
* compiles against. Keep the two in step when
|
|
33416
|
-
* `IAgentSettings` follows with
|
|
33715
|
+
* compiles against (the track types mirror its `realtimeTracks.ts`). Keep the two in step when
|
|
33716
|
+
* adding a section or property — the same pact `IAgentSettings` follows with
|
|
33717
|
+
* `@memberjunction/ai-core-plus`. Core's `modelConfiguration.test.ts` fails when they differ.
|
|
33417
33718
|
*
|
|
33418
33719
|
* **Boundary rule**: anything the engine filters, sorts, or joins on stays a COLUMN (`PowerRank`,
|
|
33419
33720
|
* `IsActive`, `Priority`, `Status` — SQL cannot cheaply predicate into this bag); anything a driver
|
|
@@ -33490,6 +33791,21 @@ export interface MJAIModelVendorEntity_LLMConfigurationSettings {
|
|
|
33490
33791
|
*/
|
|
33491
33792
|
PrefixPromptCache?: boolean | null;
|
|
33492
33793
|
}
|
|
33794
|
+
/**
|
|
33795
|
+
* MJ-normalized turn-detection mode, provider-neutral so a shared catalog is safe on every provider:
|
|
33796
|
+
* - `'default'` — let the provider profile decide (today's behavior).
|
|
33797
|
+
* - `'serverVad'` — classic silence-based server VAD.
|
|
33798
|
+
* - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
|
|
33799
|
+
* - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
|
|
33800
|
+
* to; the forward slot for full-duplex reasoning voice models.
|
|
33801
|
+
*/
|
|
33802
|
+
export type MJAIModelVendorEntity_RealtimeTurnDetectionMode = 'default' | 'serverVad' | 'semanticVad' | 'native';
|
|
33803
|
+
/**
|
|
33804
|
+
* What a turn's input may include (distinct from detection, which decides when a turn ends):
|
|
33805
|
+
* - `'audioActivityOnly'` — audio activity only; video frames are sent deliberately.
|
|
33806
|
+
* - `'audioActivityAndAllVideo'` — audio activity plus every video frame (Gemini 3.8 Live's default).
|
|
33807
|
+
*/
|
|
33808
|
+
export type MJAIModelVendorEntity_RealtimeTurnCoverage = 'audioActivityOnly' | 'audioActivityAndAllVideo';
|
|
33493
33809
|
/**
|
|
33494
33810
|
* MJ-normalized turn-detection settings for realtime (speech-to-speech) models. Every field is
|
|
33495
33811
|
* optional; absent fields contribute nothing. Provider profiles translate this vocabulary to their
|
|
@@ -33497,39 +33813,139 @@ export interface MJAIModelVendorEntity_LLMConfigurationSettings {
|
|
|
33497
33813
|
* default — a wrong inherited value degrades safely, it never rejects a session.
|
|
33498
33814
|
*/
|
|
33499
33815
|
export interface MJAIModelVendorEntity_RealtimeTurnDetectionSettings {
|
|
33500
|
-
/**
|
|
33501
|
-
|
|
33502
|
-
* - `'serverVad'` — classic silence-based server VAD.
|
|
33503
|
-
* - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
|
|
33504
|
-
* - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
|
|
33505
|
-
* to; the forward slot for full-duplex reasoning voice models.
|
|
33506
|
-
*/
|
|
33507
|
-
Mode?: 'default' | 'serverVad' | 'semanticVad' | 'native' | null;
|
|
33816
|
+
/** The normalized mode; absent = `'default'`. */
|
|
33817
|
+
Mode?: MJAIModelVendorEntity_RealtimeTurnDetectionMode;
|
|
33508
33818
|
/** Semantic-VAD aggressiveness (OpenAI `eagerness`); ignored without a mapping. */
|
|
33509
|
-
Eagerness?: 'low' | 'auto' | 'high'
|
|
33819
|
+
Eagerness?: 'low' | 'auto' | 'high';
|
|
33510
33820
|
/** Server-VAD activation threshold (0–1); ignored without a mapping. */
|
|
33511
|
-
Threshold?: number
|
|
33821
|
+
Threshold?: number;
|
|
33512
33822
|
/** Server-VAD trailing-silence duration in ms; ignored without a mapping. */
|
|
33513
|
-
SilenceDurationMs?: number
|
|
33823
|
+
SilenceDurationMs?: number;
|
|
33824
|
+
/**
|
|
33825
|
+
* What a turn's input may include. Declaring it keeps Gemini 3.8 Live's every-frame default (billed,
|
|
33826
|
+
* and consuming context) a decision rather than an inherited cost. Ignored without a mapping.
|
|
33827
|
+
*/
|
|
33828
|
+
Coverage?: MJAIModelVendorEntity_RealtimeTurnCoverage;
|
|
33829
|
+
}
|
|
33830
|
+
/** Which plane handles reasoning: `'local'` (the application/agent loop, the default) or `'remote'`. */
|
|
33831
|
+
export type MJAIModelVendorEntity_RealtimeReasoningPlane = 'local' | 'remote';
|
|
33832
|
+
/** A reasoning effort in MJ's neutral vocabulary; each provider profile maps the values its model accepts. */
|
|
33833
|
+
export type MJAIModelVendorEntity_RealtimeReasoningEffort = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
33834
|
+
/** The remote reasoning target, used when `Plane` is `'remote'`. */
|
|
33835
|
+
export interface MJAIModelVendorEntity_RealtimeRemoteReasoning {
|
|
33836
|
+
/** What the reference denotes: `'model'` (Live, Inworld) or `'hostedAgent'` (ElevenLabs). */
|
|
33837
|
+
Kind?: 'model' | 'hostedAgent';
|
|
33838
|
+
/** The target, e.g. `'gpt-5.6-terra'`, `'anthropic/claude-sonnet-4-6'`, `'MJ Realtime Co-Agent'`. */
|
|
33839
|
+
Ref?: string;
|
|
33840
|
+
/** The target's reasoning effort, for models that support one. */
|
|
33841
|
+
Effort?: MJAIModelVendorEntity_RealtimeReasoningEffort;
|
|
33842
|
+
/** The most output tokens for the remote reasoning pass. */
|
|
33843
|
+
MaxOutputTokens?: number;
|
|
33844
|
+
}
|
|
33845
|
+
/** Reasoning-plane settings for realtime models — dual delegation configuration. */
|
|
33846
|
+
export interface MJAIModelVendorEntity_RealtimeReasoningSettings {
|
|
33847
|
+
/** Absent = `'local'`. Fixed when the session is created. */
|
|
33848
|
+
Plane?: MJAIModelVendorEntity_RealtimeReasoningPlane;
|
|
33849
|
+
/** The remote target when `Plane` is `'remote'`. */
|
|
33850
|
+
Remote?: MJAIModelVendorEntity_RealtimeRemoteReasoning;
|
|
33851
|
+
/**
|
|
33852
|
+
* How hard the model itself reasons (Gemini `thinkingConfig.thinkingLevel`). A profile that cannot
|
|
33853
|
+
* honour the value logs a warning and uses its own default.
|
|
33854
|
+
*/
|
|
33855
|
+
Level?: MJAIModelVendorEntity_RealtimeReasoningEffort;
|
|
33856
|
+
/**
|
|
33857
|
+
* Ask the model for human-readable summaries of its own reasoning (Gemini `includeThoughts`). They
|
|
33858
|
+
* are progress narration, not assistant speech. Absent = off.
|
|
33859
|
+
*/
|
|
33860
|
+
IncludeThoughtSummaries?: boolean;
|
|
33861
|
+
}
|
|
33862
|
+
/** Which way samples flow on a track, relative to the model. */
|
|
33863
|
+
export type MJAIModelVendorEntity_RealtimeTrackDirection = 'inbound' | 'outbound';
|
|
33864
|
+
/** The modalities MJ itself reasons about (cost, consent, transcripts). */
|
|
33865
|
+
export type MJAIModelVendorEntity_RealtimeWellKnownModality = 'audio' | 'video' | 'image' | 'text';
|
|
33866
|
+
/** A modality key: one of the well-known values, or any registered string. */
|
|
33867
|
+
export type MJAIModelVendorEntity_RealtimeModalityKey = MJAIModelVendorEntity_RealtimeWellKnownModality | (string & {});
|
|
33868
|
+
/** How a track's usage is metered. */
|
|
33869
|
+
export type MJAIModelVendorEntity_RealtimeTrackUsageBasis = 'tokens' | 'seconds' | 'frames' | 'bytes';
|
|
33870
|
+
/**
|
|
33871
|
+
* One directional stream of one modality, as {@link MJAIModelVendorEntity_RealtimeConfigurationSettings.RequestedTracks}
|
|
33872
|
+
* requests it. Mirrors the track descriptor in `@memberjunction/ai` (`realtimeTracks.ts`).
|
|
33873
|
+
*/
|
|
33874
|
+
export interface MJAIModelVendorEntity_RealtimeTrackDescriptor {
|
|
33875
|
+
/** The modality this track carries. */
|
|
33876
|
+
Modality: MJAIModelVendorEntity_RealtimeModalityKey;
|
|
33877
|
+
/** Which way samples flow, relative to the model. */
|
|
33878
|
+
Direction: MJAIModelVendorEntity_RealtimeTrackDirection;
|
|
33879
|
+
/** Wire encoding, e.g. `'audio/pcm;rate=16000'` or `'image/jpeg'`; absent = the profile's default. */
|
|
33880
|
+
Encoding?: string;
|
|
33881
|
+
/** Sample or frame cadence: fps for video, Hz for audio. */
|
|
33882
|
+
Rate?: number;
|
|
33883
|
+
/** How this track is metered; absent = the session's own basis. */
|
|
33884
|
+
UsageBasis?: readonly MJAIModelVendorEntity_RealtimeTrackUsageBasis[];
|
|
33885
|
+
/** Whether establishing this track needs an explicit human grant (camera, screen, microphone). */
|
|
33886
|
+
RequiresConsent?: boolean;
|
|
33887
|
+
/** Whether the session needs this track (`true`) or treats it as best-effort (`false`). */
|
|
33888
|
+
Required?: boolean;
|
|
33889
|
+
/** Which source feeds this track, when several streams of one modality and direction can exist. */
|
|
33890
|
+
SourceID?: string;
|
|
33891
|
+
/** A human-readable name for that source ("Whiteboard", "Camera"). */
|
|
33892
|
+
Label?: string;
|
|
33514
33893
|
}
|
|
33515
33894
|
/**
|
|
33516
|
-
*
|
|
33517
|
-
* `'
|
|
33895
|
+
* Which server signal means "the session has gone idle and deferred work may be flushed":
|
|
33896
|
+
* `'turnComplete'` (the default) or `'interactionStatus'`, for models with asynchronous reasoning
|
|
33897
|
+
* whose `turnComplete` arrives while they still reason and call tools.
|
|
33518
33898
|
*/
|
|
33519
|
-
export
|
|
33899
|
+
export type MJAIModelVendorEntity_RealtimeIdleSignal = 'turnComplete' | 'interactionStatus';
|
|
33900
|
+
/** Tool-execution semantics a model permits. Capability declarations, not requests. */
|
|
33901
|
+
export interface MJAIModelVendorEntity_RealtimeToolingSettings {
|
|
33520
33902
|
/**
|
|
33521
|
-
*
|
|
33522
|
-
*
|
|
33523
|
-
* - `'remote'` — delegated to remote model or hosted agent.
|
|
33903
|
+
* Whether synchronous blocking tool execution is legal. Absent = permitted. `false` on models that
|
|
33904
|
+
* reject blocking mode outright (Gemini 3.8 Live Extended Thinking).
|
|
33524
33905
|
*/
|
|
33525
|
-
|
|
33526
|
-
/**
|
|
33527
|
-
|
|
33528
|
-
|
|
33529
|
-
|
|
33530
|
-
|
|
33531
|
-
|
|
33532
|
-
|
|
33906
|
+
SupportsBlockingExecution?: boolean;
|
|
33907
|
+
/**
|
|
33908
|
+
* Whether per-function scheduling hints are legal (Gemini `SILENT` / `WHEN_IDLE` / `INTERRUPTED`).
|
|
33909
|
+
* Absent = not supported.
|
|
33910
|
+
*/
|
|
33911
|
+
SupportsScheduling?: boolean;
|
|
33912
|
+
/** Preferred function-calling behavior. */
|
|
33913
|
+
Behavior?: 'BLOCKING' | 'NON_BLOCKING';
|
|
33914
|
+
}
|
|
33915
|
+
/**
|
|
33916
|
+
* One price for a quantity a realtime session produces, in one currency. It applies only when all
|
|
33917
|
+
* three fields are set; a partial price, or a unit or currency the reader does not handle, counts
|
|
33918
|
+
* as no price.
|
|
33919
|
+
*/
|
|
33920
|
+
export interface MJAIModelVendorEntity_RealtimeUnitPrice {
|
|
33921
|
+
/** The amount charged per {@link MJAIModelVendorEntity_RealtimeUnitPrice.Unit}. Never negative. */
|
|
33922
|
+
Price?: number | null;
|
|
33923
|
+
/**
|
|
33924
|
+
* The billing unit, named as in `MJ: AI Model Price Unit Types`. `'Per Minute'`: one minute.
|
|
33925
|
+
* `'Per 1M Tokens'`: one million tokens.
|
|
33926
|
+
*/
|
|
33927
|
+
Unit?: 'Per Minute' | 'Per 1M Tokens' | null;
|
|
33928
|
+
/** ISO 4217 currency code, uppercase (e.g. `USD`), as on `MJ: AI Model Costs`. */
|
|
33929
|
+
Currency?: string | null;
|
|
33930
|
+
}
|
|
33931
|
+
/**
|
|
33932
|
+
* Prices for realtime output that the model's cost rows (`MJ: AI Model Costs`) do not price on
|
|
33933
|
+
* their own; the cost rows stay the authority for token prices. A price belongs to the host that
|
|
33934
|
+
* charges it, so set this on the model-vendor row: a price on the model or the model type would
|
|
33935
|
+
* reach every vendor that serves the model.
|
|
33936
|
+
*/
|
|
33937
|
+
export interface MJAIModelVendorEntity_RealtimePricingSettings {
|
|
33938
|
+
/**
|
|
33939
|
+
* The price of avatar video output, charged on top of the session's token cost. `'Per Minute'`
|
|
33940
|
+
* prices the seconds of avatar video the model generates; `'Per 1M Tokens'` prices the output
|
|
33941
|
+
* tokens the provider counts as video. Set the price and its unit together: the cascade merges
|
|
33942
|
+
* per key, so a layer that sets only one of them keeps the other from the layer below.
|
|
33943
|
+
*
|
|
33944
|
+
* Unverified until checked against Google's bill (#5312): Gemini 3.8 Live on Vertex AI is
|
|
33945
|
+
* seeded at $0.37152 per minute, derived from Google's $1.00 per 1M avatar video output tokens
|
|
33946
|
+
* at 6,192 tokens per second.
|
|
33947
|
+
*/
|
|
33948
|
+
AvatarVideoOutput?: MJAIModelVendorEntity_RealtimeUnitPrice | null;
|
|
33533
33949
|
}
|
|
33534
33950
|
/** Realtime (speech-to-speech) knobs. */
|
|
33535
33951
|
export interface MJAIModelVendorEntity_RealtimeConfigurationSettings {
|
|
@@ -33543,7 +33959,31 @@ export interface MJAIModelVendorEntity_RealtimeConfigurationSettings {
|
|
|
33543
33959
|
/**
|
|
33544
33960
|
* Reasoning plane settings — dual delegation configuration. Absent defaults to `'local'`.
|
|
33545
33961
|
*/
|
|
33546
|
-
Reasoning?: MJAIModelVendorEntity_RealtimeReasoningSettings
|
|
33962
|
+
Reasoning?: MJAIModelVendorEntity_RealtimeReasoningSettings;
|
|
33963
|
+
/**
|
|
33964
|
+
* Whether this realtime model natively supports full-duplex conversational audio
|
|
33965
|
+
* (simultaneous speaking and listening with natural interruptions).
|
|
33966
|
+
*
|
|
33967
|
+
* When true, full-duplex models do not receive turn-taking tools or an energy-VAD floor gate,
|
|
33968
|
+
* allowing the provider's native full-duplex model to handle natural turn transitions.
|
|
33969
|
+
* Cascades AIModelType -> Vendor ModelDefaults -> AIModel -> AIModelVendor.
|
|
33970
|
+
*/
|
|
33971
|
+
FullDuplex?: boolean | null;
|
|
33972
|
+
/** Tool-execution semantics this model permits. Absent = the profile's own defaults. */
|
|
33973
|
+
Tooling?: MJAIModelVendorEntity_RealtimeToolingSettings;
|
|
33974
|
+
/**
|
|
33975
|
+
* Media tracks a session asks the model to establish beyond audio. Absent or empty establishes
|
|
33976
|
+
* audio only, so a video track exists only because something asked for it and never arrives as an
|
|
33977
|
+
* inherited cost. Requests are intersected with what the model supports.
|
|
33978
|
+
*/
|
|
33979
|
+
RequestedTracks?: readonly MJAIModelVendorEntity_RealtimeTrackDescriptor[];
|
|
33980
|
+
/** Which server signal means the session has gone idle. Absent = `'turnComplete'`. */
|
|
33981
|
+
IdleSignal?: MJAIModelVendorEntity_RealtimeIdleSignal;
|
|
33982
|
+
/**
|
|
33983
|
+
* Prices for output the token cost rows do not cover, such as avatar video. Set it on the
|
|
33984
|
+
* model-vendor row.
|
|
33985
|
+
*/
|
|
33986
|
+
Pricing?: MJAIModelVendorEntity_RealtimePricingSettings | null;
|
|
33547
33987
|
}
|
|
33548
33988
|
/** Vision knobs. Reserved — no consumers yet. */
|
|
33549
33989
|
export interface MJAIModelVendorEntity_VisionConfigurationSettings {
|
|
@@ -33553,6 +33993,22 @@ export interface MJAIModelVendorEntity_VisionConfigurationSettings {
|
|
|
33553
33993
|
export interface MJAIModelVendorEntity_AudioConfigurationSettings {
|
|
33554
33994
|
[key: string]: unknown;
|
|
33555
33995
|
}
|
|
33996
|
+
/**
|
|
33997
|
+
* Privacy posture of the model deployment this configuration describes. Set it on the catalog layers
|
|
33998
|
+
* (`MJ: AI Models`, `MJ: AI Model Vendors`, a vendor's `ModelDefaults`): data retention is a property of
|
|
33999
|
+
* how a model is SERVED, so the vendor row is usually where it is true.
|
|
34000
|
+
*/
|
|
34001
|
+
export interface MJAIModelVendorEntity_PrivacyConfigurationSettings {
|
|
34002
|
+
/**
|
|
34003
|
+
* Whether this model is served under a zero-data-retention agreement: the provider does not store
|
|
34004
|
+
* prompts, audio, images or outputs beyond serving the request. `true` is a positive claim that
|
|
34005
|
+
* somebody verified; absent, `null` and `false` all mean "not declared", never "retained", because
|
|
34006
|
+
* an undeclared model is not known to be bad. It is read by realtime channel exposure policy:
|
|
34007
|
+
* an agent that requires zero data retention for a channel's `'state'` or `'pixels'` exposure has
|
|
34008
|
+
* that exposure lowered on any model that does not declare `true` here.
|
|
34009
|
+
*/
|
|
34010
|
+
ZeroDataRetention?: boolean | null;
|
|
34011
|
+
}
|
|
33556
34012
|
/**
|
|
33557
34013
|
* Typed-decision knobs, consumed at call time by the decision runner. They declare what a decision
|
|
33558
34014
|
* model accepts, so an oversized request can be refused with a clear message before the call,
|
|
@@ -33587,6 +34043,8 @@ export interface MJAIModelVendorEntity_IAIModelConfiguration {
|
|
|
33587
34043
|
Audio?: MJAIModelVendorEntity_AudioConfigurationSettings | null;
|
|
33588
34044
|
/** Typed-decision limits. Honored at the catalog layers. */
|
|
33589
34045
|
Decision?: MJAIModelVendorEntity_DecisionConfigurationSettings | null;
|
|
34046
|
+
/** Privacy posture of the model deployment. Honored at the catalog layers. */
|
|
34047
|
+
Privacy?: MJAIModelVendorEntity_PrivacyConfigurationSettings | null;
|
|
33590
34048
|
}
|
|
33591
34049
|
/**
|
|
33592
34050
|
* The `PromptConfiguration` column on `MJ: AI Prompts` — per-prompt call-time knobs, layered ON TOP of the
|
|
@@ -33606,6 +34064,8 @@ export interface MJAIModelVendorEntity_IAIPromptConfiguration {
|
|
|
33606
34064
|
Audio?: MJAIModelVendorEntity_AudioConfigurationSettings | null;
|
|
33607
34065
|
/** Typed-decision limits. Reserved at this layer. */
|
|
33608
34066
|
Decision?: MJAIModelVendorEntity_DecisionConfigurationSettings | null;
|
|
34067
|
+
/** Privacy posture. Reserved at this layer. */
|
|
34068
|
+
Privacy?: MJAIModelVendorEntity_PrivacyConfigurationSettings | null;
|
|
33609
34069
|
}
|
|
33610
34070
|
/**
|
|
33611
34071
|
* The `PromptConfiguration` column on `MJ: AI Prompt Models` — the most specific layer, overriding both
|
|
@@ -33622,6 +34082,8 @@ export interface MJAIModelVendorEntity_IAIPromptModelConfiguration {
|
|
|
33622
34082
|
Audio?: MJAIModelVendorEntity_AudioConfigurationSettings | null;
|
|
33623
34083
|
/** Typed-decision limits. Reserved at this layer. */
|
|
33624
34084
|
Decision?: MJAIModelVendorEntity_DecisionConfigurationSettings | null;
|
|
34085
|
+
/** Privacy posture. Reserved at this layer. */
|
|
34086
|
+
Privacy?: MJAIModelVendorEntity_PrivacyConfigurationSettings | null;
|
|
33625
34087
|
}
|
|
33626
34088
|
/**
|
|
33627
34089
|
* `MJ: AI Vendors . Configuration` — the vendor's own configuration bag. General-purpose: a vendor
|
|
@@ -33893,7 +34355,8 @@ export declare class MJAIModelVendorEntity extends BaseEntity<MJAIModelVendorEnt
|
|
|
33893
34355
|
* Two kinds of type live here, and the distinction is the whole point of the file:
|
|
33894
34356
|
*
|
|
33895
34357
|
* 1. **Shared modality sections** (`MJAIModelEntity_LLMConfigurationSettings`, `MJAIModelEntity_RealtimeConfigurationSettings`,
|
|
33896
|
-
* `MJAIModelEntity_VisionConfigurationSettings`, `MJAIModelEntity_AudioConfigurationSettings`, `MJAIModelEntity_DecisionConfigurationSettings
|
|
34358
|
+
* `MJAIModelEntity_VisionConfigurationSettings`, `MJAIModelEntity_AudioConfigurationSettings`, `MJAIModelEntity_DecisionConfigurationSettings`,
|
|
34359
|
+
* `MJAIModelEntity_PrivacyConfigurationSettings`) —
|
|
33897
34360
|
* what "the LLM configuration"
|
|
33898
34361
|
* MEANS, defined once and reused by every layer that carries a configuration bag.
|
|
33899
34362
|
* 2. **Per-table outer types** (`MJAIModelEntity_IAIModelConfiguration`, `MJAIModelEntity_IAIPromptConfiguration`,
|
|
@@ -33919,12 +34382,13 @@ export declare class MJAIModelVendorEntity extends BaseEntity<MJAIModelVendorEnt
|
|
|
33919
34382
|
* therefore has to be self-contained — a definition cannot `import` a sibling, and `@file:`
|
|
33920
34383
|
* substitutes a whole file rather than splicing one into another. Keeping every AI configuration
|
|
33921
34384
|
* type in ONE file is what makes a shared section possible at all; the cost is that each of the
|
|
33922
|
-
*
|
|
34385
|
+
* six entities emits the full (prefixed) set, including outer types it does not use.
|
|
33923
34386
|
*
|
|
33924
34387
|
* **Lockstep contract**: this file is the JSONType SOURCE; its package-side mirror is
|
|
33925
34388
|
* `packages/AI/Core/src/generic/modelConfiguration.ts` in `@memberjunction/ai`, which runtime code
|
|
33926
|
-
* compiles against. Keep the two in step when
|
|
33927
|
-
* `IAgentSettings` follows with
|
|
34389
|
+
* compiles against (the track types mirror its `realtimeTracks.ts`). Keep the two in step when
|
|
34390
|
+
* adding a section or property — the same pact `IAgentSettings` follows with
|
|
34391
|
+
* `@memberjunction/ai-core-plus`. Core's `modelConfiguration.test.ts` fails when they differ.
|
|
33928
34392
|
*
|
|
33929
34393
|
* **Boundary rule**: anything the engine filters, sorts, or joins on stays a COLUMN (`PowerRank`,
|
|
33930
34394
|
* `IsActive`, `Priority`, `Status` — SQL cannot cheaply predicate into this bag); anything a driver
|
|
@@ -34001,6 +34465,21 @@ export interface MJAIModelEntity_LLMConfigurationSettings {
|
|
|
34001
34465
|
*/
|
|
34002
34466
|
PrefixPromptCache?: boolean | null;
|
|
34003
34467
|
}
|
|
34468
|
+
/**
|
|
34469
|
+
* MJ-normalized turn-detection mode, provider-neutral so a shared catalog is safe on every provider:
|
|
34470
|
+
* - `'default'` — let the provider profile decide (today's behavior).
|
|
34471
|
+
* - `'serverVad'` — classic silence-based server VAD.
|
|
34472
|
+
* - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
|
|
34473
|
+
* - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
|
|
34474
|
+
* to; the forward slot for full-duplex reasoning voice models.
|
|
34475
|
+
*/
|
|
34476
|
+
export type MJAIModelEntity_RealtimeTurnDetectionMode = 'default' | 'serverVad' | 'semanticVad' | 'native';
|
|
34477
|
+
/**
|
|
34478
|
+
* What a turn's input may include (distinct from detection, which decides when a turn ends):
|
|
34479
|
+
* - `'audioActivityOnly'` — audio activity only; video frames are sent deliberately.
|
|
34480
|
+
* - `'audioActivityAndAllVideo'` — audio activity plus every video frame (Gemini 3.8 Live's default).
|
|
34481
|
+
*/
|
|
34482
|
+
export type MJAIModelEntity_RealtimeTurnCoverage = 'audioActivityOnly' | 'audioActivityAndAllVideo';
|
|
34004
34483
|
/**
|
|
34005
34484
|
* MJ-normalized turn-detection settings for realtime (speech-to-speech) models. Every field is
|
|
34006
34485
|
* optional; absent fields contribute nothing. Provider profiles translate this vocabulary to their
|
|
@@ -34008,39 +34487,139 @@ export interface MJAIModelEntity_LLMConfigurationSettings {
|
|
|
34008
34487
|
* default — a wrong inherited value degrades safely, it never rejects a session.
|
|
34009
34488
|
*/
|
|
34010
34489
|
export interface MJAIModelEntity_RealtimeTurnDetectionSettings {
|
|
34011
|
-
/**
|
|
34012
|
-
|
|
34013
|
-
* - `'serverVad'` — classic silence-based server VAD.
|
|
34014
|
-
* - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
|
|
34015
|
-
* - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
|
|
34016
|
-
* to; the forward slot for full-duplex reasoning voice models.
|
|
34017
|
-
*/
|
|
34018
|
-
Mode?: 'default' | 'serverVad' | 'semanticVad' | 'native' | null;
|
|
34490
|
+
/** The normalized mode; absent = `'default'`. */
|
|
34491
|
+
Mode?: MJAIModelEntity_RealtimeTurnDetectionMode;
|
|
34019
34492
|
/** Semantic-VAD aggressiveness (OpenAI `eagerness`); ignored without a mapping. */
|
|
34020
|
-
Eagerness?: 'low' | 'auto' | 'high'
|
|
34493
|
+
Eagerness?: 'low' | 'auto' | 'high';
|
|
34021
34494
|
/** Server-VAD activation threshold (0–1); ignored without a mapping. */
|
|
34022
|
-
Threshold?: number
|
|
34495
|
+
Threshold?: number;
|
|
34023
34496
|
/** Server-VAD trailing-silence duration in ms; ignored without a mapping. */
|
|
34024
|
-
SilenceDurationMs?: number
|
|
34497
|
+
SilenceDurationMs?: number;
|
|
34498
|
+
/**
|
|
34499
|
+
* What a turn's input may include. Declaring it keeps Gemini 3.8 Live's every-frame default (billed,
|
|
34500
|
+
* and consuming context) a decision rather than an inherited cost. Ignored without a mapping.
|
|
34501
|
+
*/
|
|
34502
|
+
Coverage?: MJAIModelEntity_RealtimeTurnCoverage;
|
|
34503
|
+
}
|
|
34504
|
+
/** Which plane handles reasoning: `'local'` (the application/agent loop, the default) or `'remote'`. */
|
|
34505
|
+
export type MJAIModelEntity_RealtimeReasoningPlane = 'local' | 'remote';
|
|
34506
|
+
/** A reasoning effort in MJ's neutral vocabulary; each provider profile maps the values its model accepts. */
|
|
34507
|
+
export type MJAIModelEntity_RealtimeReasoningEffort = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
34508
|
+
/** The remote reasoning target, used when `Plane` is `'remote'`. */
|
|
34509
|
+
export interface MJAIModelEntity_RealtimeRemoteReasoning {
|
|
34510
|
+
/** What the reference denotes: `'model'` (Live, Inworld) or `'hostedAgent'` (ElevenLabs). */
|
|
34511
|
+
Kind?: 'model' | 'hostedAgent';
|
|
34512
|
+
/** The target, e.g. `'gpt-5.6-terra'`, `'anthropic/claude-sonnet-4-6'`, `'MJ Realtime Co-Agent'`. */
|
|
34513
|
+
Ref?: string;
|
|
34514
|
+
/** The target's reasoning effort, for models that support one. */
|
|
34515
|
+
Effort?: MJAIModelEntity_RealtimeReasoningEffort;
|
|
34516
|
+
/** The most output tokens for the remote reasoning pass. */
|
|
34517
|
+
MaxOutputTokens?: number;
|
|
34518
|
+
}
|
|
34519
|
+
/** Reasoning-plane settings for realtime models — dual delegation configuration. */
|
|
34520
|
+
export interface MJAIModelEntity_RealtimeReasoningSettings {
|
|
34521
|
+
/** Absent = `'local'`. Fixed when the session is created. */
|
|
34522
|
+
Plane?: MJAIModelEntity_RealtimeReasoningPlane;
|
|
34523
|
+
/** The remote target when `Plane` is `'remote'`. */
|
|
34524
|
+
Remote?: MJAIModelEntity_RealtimeRemoteReasoning;
|
|
34525
|
+
/**
|
|
34526
|
+
* How hard the model itself reasons (Gemini `thinkingConfig.thinkingLevel`). A profile that cannot
|
|
34527
|
+
* honour the value logs a warning and uses its own default.
|
|
34528
|
+
*/
|
|
34529
|
+
Level?: MJAIModelEntity_RealtimeReasoningEffort;
|
|
34530
|
+
/**
|
|
34531
|
+
* Ask the model for human-readable summaries of its own reasoning (Gemini `includeThoughts`). They
|
|
34532
|
+
* are progress narration, not assistant speech. Absent = off.
|
|
34533
|
+
*/
|
|
34534
|
+
IncludeThoughtSummaries?: boolean;
|
|
34535
|
+
}
|
|
34536
|
+
/** Which way samples flow on a track, relative to the model. */
|
|
34537
|
+
export type MJAIModelEntity_RealtimeTrackDirection = 'inbound' | 'outbound';
|
|
34538
|
+
/** The modalities MJ itself reasons about (cost, consent, transcripts). */
|
|
34539
|
+
export type MJAIModelEntity_RealtimeWellKnownModality = 'audio' | 'video' | 'image' | 'text';
|
|
34540
|
+
/** A modality key: one of the well-known values, or any registered string. */
|
|
34541
|
+
export type MJAIModelEntity_RealtimeModalityKey = MJAIModelEntity_RealtimeWellKnownModality | (string & {});
|
|
34542
|
+
/** How a track's usage is metered. */
|
|
34543
|
+
export type MJAIModelEntity_RealtimeTrackUsageBasis = 'tokens' | 'seconds' | 'frames' | 'bytes';
|
|
34544
|
+
/**
|
|
34545
|
+
* One directional stream of one modality, as {@link MJAIModelEntity_RealtimeConfigurationSettings.RequestedTracks}
|
|
34546
|
+
* requests it. Mirrors the track descriptor in `@memberjunction/ai` (`realtimeTracks.ts`).
|
|
34547
|
+
*/
|
|
34548
|
+
export interface MJAIModelEntity_RealtimeTrackDescriptor {
|
|
34549
|
+
/** The modality this track carries. */
|
|
34550
|
+
Modality: MJAIModelEntity_RealtimeModalityKey;
|
|
34551
|
+
/** Which way samples flow, relative to the model. */
|
|
34552
|
+
Direction: MJAIModelEntity_RealtimeTrackDirection;
|
|
34553
|
+
/** Wire encoding, e.g. `'audio/pcm;rate=16000'` or `'image/jpeg'`; absent = the profile's default. */
|
|
34554
|
+
Encoding?: string;
|
|
34555
|
+
/** Sample or frame cadence: fps for video, Hz for audio. */
|
|
34556
|
+
Rate?: number;
|
|
34557
|
+
/** How this track is metered; absent = the session's own basis. */
|
|
34558
|
+
UsageBasis?: readonly MJAIModelEntity_RealtimeTrackUsageBasis[];
|
|
34559
|
+
/** Whether establishing this track needs an explicit human grant (camera, screen, microphone). */
|
|
34560
|
+
RequiresConsent?: boolean;
|
|
34561
|
+
/** Whether the session needs this track (`true`) or treats it as best-effort (`false`). */
|
|
34562
|
+
Required?: boolean;
|
|
34563
|
+
/** Which source feeds this track, when several streams of one modality and direction can exist. */
|
|
34564
|
+
SourceID?: string;
|
|
34565
|
+
/** A human-readable name for that source ("Whiteboard", "Camera"). */
|
|
34566
|
+
Label?: string;
|
|
34025
34567
|
}
|
|
34026
34568
|
/**
|
|
34027
|
-
*
|
|
34028
|
-
* `'
|
|
34569
|
+
* Which server signal means "the session has gone idle and deferred work may be flushed":
|
|
34570
|
+
* `'turnComplete'` (the default) or `'interactionStatus'`, for models with asynchronous reasoning
|
|
34571
|
+
* whose `turnComplete` arrives while they still reason and call tools.
|
|
34029
34572
|
*/
|
|
34030
|
-
export
|
|
34573
|
+
export type MJAIModelEntity_RealtimeIdleSignal = 'turnComplete' | 'interactionStatus';
|
|
34574
|
+
/** Tool-execution semantics a model permits. Capability declarations, not requests. */
|
|
34575
|
+
export interface MJAIModelEntity_RealtimeToolingSettings {
|
|
34031
34576
|
/**
|
|
34032
|
-
*
|
|
34033
|
-
*
|
|
34034
|
-
* - `'remote'` — delegated to remote model or hosted agent.
|
|
34577
|
+
* Whether synchronous blocking tool execution is legal. Absent = permitted. `false` on models that
|
|
34578
|
+
* reject blocking mode outright (Gemini 3.8 Live Extended Thinking).
|
|
34035
34579
|
*/
|
|
34036
|
-
|
|
34037
|
-
/**
|
|
34038
|
-
|
|
34039
|
-
|
|
34040
|
-
|
|
34041
|
-
|
|
34042
|
-
|
|
34043
|
-
|
|
34580
|
+
SupportsBlockingExecution?: boolean;
|
|
34581
|
+
/**
|
|
34582
|
+
* Whether per-function scheduling hints are legal (Gemini `SILENT` / `WHEN_IDLE` / `INTERRUPTED`).
|
|
34583
|
+
* Absent = not supported.
|
|
34584
|
+
*/
|
|
34585
|
+
SupportsScheduling?: boolean;
|
|
34586
|
+
/** Preferred function-calling behavior. */
|
|
34587
|
+
Behavior?: 'BLOCKING' | 'NON_BLOCKING';
|
|
34588
|
+
}
|
|
34589
|
+
/**
|
|
34590
|
+
* One price for a quantity a realtime session produces, in one currency. It applies only when all
|
|
34591
|
+
* three fields are set; a partial price, or a unit or currency the reader does not handle, counts
|
|
34592
|
+
* as no price.
|
|
34593
|
+
*/
|
|
34594
|
+
export interface MJAIModelEntity_RealtimeUnitPrice {
|
|
34595
|
+
/** The amount charged per {@link MJAIModelEntity_RealtimeUnitPrice.Unit}. Never negative. */
|
|
34596
|
+
Price?: number | null;
|
|
34597
|
+
/**
|
|
34598
|
+
* The billing unit, named as in `MJ: AI Model Price Unit Types`. `'Per Minute'`: one minute.
|
|
34599
|
+
* `'Per 1M Tokens'`: one million tokens.
|
|
34600
|
+
*/
|
|
34601
|
+
Unit?: 'Per Minute' | 'Per 1M Tokens' | null;
|
|
34602
|
+
/** ISO 4217 currency code, uppercase (e.g. `USD`), as on `MJ: AI Model Costs`. */
|
|
34603
|
+
Currency?: string | null;
|
|
34604
|
+
}
|
|
34605
|
+
/**
|
|
34606
|
+
* Prices for realtime output that the model's cost rows (`MJ: AI Model Costs`) do not price on
|
|
34607
|
+
* their own; the cost rows stay the authority for token prices. A price belongs to the host that
|
|
34608
|
+
* charges it, so set this on the model-vendor row: a price on the model or the model type would
|
|
34609
|
+
* reach every vendor that serves the model.
|
|
34610
|
+
*/
|
|
34611
|
+
export interface MJAIModelEntity_RealtimePricingSettings {
|
|
34612
|
+
/**
|
|
34613
|
+
* The price of avatar video output, charged on top of the session's token cost. `'Per Minute'`
|
|
34614
|
+
* prices the seconds of avatar video the model generates; `'Per 1M Tokens'` prices the output
|
|
34615
|
+
* tokens the provider counts as video. Set the price and its unit together: the cascade merges
|
|
34616
|
+
* per key, so a layer that sets only one of them keeps the other from the layer below.
|
|
34617
|
+
*
|
|
34618
|
+
* Unverified until checked against Google's bill (#5312): Gemini 3.8 Live on Vertex AI is
|
|
34619
|
+
* seeded at $0.37152 per minute, derived from Google's $1.00 per 1M avatar video output tokens
|
|
34620
|
+
* at 6,192 tokens per second.
|
|
34621
|
+
*/
|
|
34622
|
+
AvatarVideoOutput?: MJAIModelEntity_RealtimeUnitPrice | null;
|
|
34044
34623
|
}
|
|
34045
34624
|
/** Realtime (speech-to-speech) knobs. */
|
|
34046
34625
|
export interface MJAIModelEntity_RealtimeConfigurationSettings {
|
|
@@ -34054,7 +34633,31 @@ export interface MJAIModelEntity_RealtimeConfigurationSettings {
|
|
|
34054
34633
|
/**
|
|
34055
34634
|
* Reasoning plane settings — dual delegation configuration. Absent defaults to `'local'`.
|
|
34056
34635
|
*/
|
|
34057
|
-
Reasoning?: MJAIModelEntity_RealtimeReasoningSettings
|
|
34636
|
+
Reasoning?: MJAIModelEntity_RealtimeReasoningSettings;
|
|
34637
|
+
/**
|
|
34638
|
+
* Whether this realtime model natively supports full-duplex conversational audio
|
|
34639
|
+
* (simultaneous speaking and listening with natural interruptions).
|
|
34640
|
+
*
|
|
34641
|
+
* When true, full-duplex models do not receive turn-taking tools or an energy-VAD floor gate,
|
|
34642
|
+
* allowing the provider's native full-duplex model to handle natural turn transitions.
|
|
34643
|
+
* Cascades AIModelType -> Vendor ModelDefaults -> AIModel -> AIModelVendor.
|
|
34644
|
+
*/
|
|
34645
|
+
FullDuplex?: boolean | null;
|
|
34646
|
+
/** Tool-execution semantics this model permits. Absent = the profile's own defaults. */
|
|
34647
|
+
Tooling?: MJAIModelEntity_RealtimeToolingSettings;
|
|
34648
|
+
/**
|
|
34649
|
+
* Media tracks a session asks the model to establish beyond audio. Absent or empty establishes
|
|
34650
|
+
* audio only, so a video track exists only because something asked for it and never arrives as an
|
|
34651
|
+
* inherited cost. Requests are intersected with what the model supports.
|
|
34652
|
+
*/
|
|
34653
|
+
RequestedTracks?: readonly MJAIModelEntity_RealtimeTrackDescriptor[];
|
|
34654
|
+
/** Which server signal means the session has gone idle. Absent = `'turnComplete'`. */
|
|
34655
|
+
IdleSignal?: MJAIModelEntity_RealtimeIdleSignal;
|
|
34656
|
+
/**
|
|
34657
|
+
* Prices for output the token cost rows do not cover, such as avatar video. Set it on the
|
|
34658
|
+
* model-vendor row.
|
|
34659
|
+
*/
|
|
34660
|
+
Pricing?: MJAIModelEntity_RealtimePricingSettings | null;
|
|
34058
34661
|
}
|
|
34059
34662
|
/** Vision knobs. Reserved — no consumers yet. */
|
|
34060
34663
|
export interface MJAIModelEntity_VisionConfigurationSettings {
|
|
@@ -34064,6 +34667,22 @@ export interface MJAIModelEntity_VisionConfigurationSettings {
|
|
|
34064
34667
|
export interface MJAIModelEntity_AudioConfigurationSettings {
|
|
34065
34668
|
[key: string]: unknown;
|
|
34066
34669
|
}
|
|
34670
|
+
/**
|
|
34671
|
+
* Privacy posture of the model deployment this configuration describes. Set it on the catalog layers
|
|
34672
|
+
* (`MJ: AI Models`, `MJ: AI Model Vendors`, a vendor's `ModelDefaults`): data retention is a property of
|
|
34673
|
+
* how a model is SERVED, so the vendor row is usually where it is true.
|
|
34674
|
+
*/
|
|
34675
|
+
export interface MJAIModelEntity_PrivacyConfigurationSettings {
|
|
34676
|
+
/**
|
|
34677
|
+
* Whether this model is served under a zero-data-retention agreement: the provider does not store
|
|
34678
|
+
* prompts, audio, images or outputs beyond serving the request. `true` is a positive claim that
|
|
34679
|
+
* somebody verified; absent, `null` and `false` all mean "not declared", never "retained", because
|
|
34680
|
+
* an undeclared model is not known to be bad. It is read by realtime channel exposure policy:
|
|
34681
|
+
* an agent that requires zero data retention for a channel's `'state'` or `'pixels'` exposure has
|
|
34682
|
+
* that exposure lowered on any model that does not declare `true` here.
|
|
34683
|
+
*/
|
|
34684
|
+
ZeroDataRetention?: boolean | null;
|
|
34685
|
+
}
|
|
34067
34686
|
/**
|
|
34068
34687
|
* Typed-decision knobs, consumed at call time by the decision runner. They declare what a decision
|
|
34069
34688
|
* model accepts, so an oversized request can be refused with a clear message before the call,
|
|
@@ -34098,6 +34717,8 @@ export interface MJAIModelEntity_IAIModelConfiguration {
|
|
|
34098
34717
|
Audio?: MJAIModelEntity_AudioConfigurationSettings | null;
|
|
34099
34718
|
/** Typed-decision limits. Honored at the catalog layers. */
|
|
34100
34719
|
Decision?: MJAIModelEntity_DecisionConfigurationSettings | null;
|
|
34720
|
+
/** Privacy posture of the model deployment. Honored at the catalog layers. */
|
|
34721
|
+
Privacy?: MJAIModelEntity_PrivacyConfigurationSettings | null;
|
|
34101
34722
|
}
|
|
34102
34723
|
/**
|
|
34103
34724
|
* The `PromptConfiguration` column on `MJ: AI Prompts` — per-prompt call-time knobs, layered ON TOP of the
|
|
@@ -34117,6 +34738,8 @@ export interface MJAIModelEntity_IAIPromptConfiguration {
|
|
|
34117
34738
|
Audio?: MJAIModelEntity_AudioConfigurationSettings | null;
|
|
34118
34739
|
/** Typed-decision limits. Reserved at this layer. */
|
|
34119
34740
|
Decision?: MJAIModelEntity_DecisionConfigurationSettings | null;
|
|
34741
|
+
/** Privacy posture. Reserved at this layer. */
|
|
34742
|
+
Privacy?: MJAIModelEntity_PrivacyConfigurationSettings | null;
|
|
34120
34743
|
}
|
|
34121
34744
|
/**
|
|
34122
34745
|
* The `PromptConfiguration` column on `MJ: AI Prompt Models` — the most specific layer, overriding both
|
|
@@ -34133,6 +34756,8 @@ export interface MJAIModelEntity_IAIPromptModelConfiguration {
|
|
|
34133
34756
|
Audio?: MJAIModelEntity_AudioConfigurationSettings | null;
|
|
34134
34757
|
/** Typed-decision limits. Reserved at this layer. */
|
|
34135
34758
|
Decision?: MJAIModelEntity_DecisionConfigurationSettings | null;
|
|
34759
|
+
/** Privacy posture. Reserved at this layer. */
|
|
34760
|
+
Privacy?: MJAIModelEntity_PrivacyConfigurationSettings | null;
|
|
34136
34761
|
}
|
|
34137
34762
|
/**
|
|
34138
34763
|
* `MJ: AI Vendors . Configuration` — the vendor's own configuration bag. General-purpose: a vendor
|
|
@@ -34411,6 +35036,9 @@ export declare class MJAIModelEntity extends BaseEntity<MJAIModelEntityType> {
|
|
|
34411
35036
|
*
|
|
34412
35037
|
* Contains vendor-native voice/avatar tuning parameters (e.g., ElevenLabs voice settings)
|
|
34413
35038
|
* moved out of generic base classes into their concrete vendor binding.
|
|
35039
|
+
*
|
|
35040
|
+
* A binding whose Modality is Video is the persona's avatar on that vendor: its `APIName` is the vendor's avatar id,
|
|
35041
|
+
* and {@link MJAIPersonaVendorEntity_IAIPersonaVendorSettings.Avatar} tunes it.
|
|
34414
35042
|
*/
|
|
34415
35043
|
export interface MJAIPersonaVendorEntity_IAIPersonaVendorSettings {
|
|
34416
35044
|
/** Vendor-native tuning, keyed by the vendor on AIPersonaVendor.VendorID.
|
|
@@ -34420,6 +35048,26 @@ export interface MJAIPersonaVendorEntity_IAIPersonaVendorSettings {
|
|
|
34420
35048
|
style?: number;
|
|
34421
35049
|
useSpeakerBoost?: boolean;
|
|
34422
35050
|
speed?: number;
|
|
35051
|
+
/**
|
|
35052
|
+
* The avatar's settings, on a binding whose Modality is Video. Vendor-neutral names: each realtime driver maps what
|
|
35053
|
+
* its vendor supports and ignores the rest.
|
|
35054
|
+
*/
|
|
35055
|
+
Avatar?: {
|
|
35056
|
+
/**
|
|
35057
|
+
* 'preset': the binding's APIName is an avatar from the vendor's catalog. 'custom': an avatar made from a
|
|
35058
|
+
* reference image, which some vendors allow only to approved accounts. Custom likenesses stay behind a feature
|
|
35059
|
+
* flag until who may create one, and with what consent, is decided.
|
|
35060
|
+
*/
|
|
35061
|
+
Kind?: 'preset' | 'custom';
|
|
35062
|
+
/** The MJ Storage file id of the reference image, when Kind is 'custom'. */
|
|
35063
|
+
ReferenceImageFileID?: string;
|
|
35064
|
+
/** The preferred video resolution; a driver uses the nearest its vendor offers. */
|
|
35065
|
+
Resolution?: 'low' | 'standard' | 'high';
|
|
35066
|
+
/** What shows behind the avatar, when the vendor can change it: a named treatment, or an image from MJ Storage. */
|
|
35067
|
+
Background?: 'default' | 'transparent' | 'blur' | {
|
|
35068
|
+
ImageFileID: string;
|
|
35069
|
+
};
|
|
35070
|
+
};
|
|
34423
35071
|
[key: string]: unknown;
|
|
34424
35072
|
}
|
|
34425
35073
|
/**
|
|
@@ -34576,6 +35224,16 @@ export interface MJAIPersonaEntity_IAIPersonaStyleDescriptors {
|
|
|
34576
35224
|
interruptionPolicy?: string;
|
|
34577
35225
|
/** Prose for GPT-Live's `Backchannel policy:` prompt block. */
|
|
34578
35226
|
backchannelPolicy?: string;
|
|
35227
|
+
/**
|
|
35228
|
+
* How the agent's video shows in the call, whatever the vendor. The agent's own persona override wins over the
|
|
35229
|
+
* persona's.
|
|
35230
|
+
*/
|
|
35231
|
+
Visual?: {
|
|
35232
|
+
/** How much of the avatar the tile frames. */
|
|
35233
|
+
Framing?: 'head' | 'shoulders' | 'waist';
|
|
35234
|
+
/** The accent of the ring that frames the tile while the agent speaks: a design-token name, never a color value. */
|
|
35235
|
+
AccentToken?: string;
|
|
35236
|
+
};
|
|
34579
35237
|
/** Open extension point for additional fine-grained style descriptors. */
|
|
34580
35238
|
[key: string]: unknown;
|
|
34581
35239
|
}
|
|
@@ -34868,7 +35526,8 @@ export declare class MJAIPromptCategoryEntity extends BaseEntity<MJAIPromptCateg
|
|
|
34868
35526
|
* Two kinds of type live here, and the distinction is the whole point of the file:
|
|
34869
35527
|
*
|
|
34870
35528
|
* 1. **Shared modality sections** (`MJAIPromptModelEntity_LLMConfigurationSettings`, `MJAIPromptModelEntity_RealtimeConfigurationSettings`,
|
|
34871
|
-
* `MJAIPromptModelEntity_VisionConfigurationSettings`, `MJAIPromptModelEntity_AudioConfigurationSettings`, `MJAIPromptModelEntity_DecisionConfigurationSettings
|
|
35529
|
+
* `MJAIPromptModelEntity_VisionConfigurationSettings`, `MJAIPromptModelEntity_AudioConfigurationSettings`, `MJAIPromptModelEntity_DecisionConfigurationSettings`,
|
|
35530
|
+
* `MJAIPromptModelEntity_PrivacyConfigurationSettings`) —
|
|
34872
35531
|
* what "the LLM configuration"
|
|
34873
35532
|
* MEANS, defined once and reused by every layer that carries a configuration bag.
|
|
34874
35533
|
* 2. **Per-table outer types** (`MJAIPromptModelEntity_IAIModelConfiguration`, `MJAIPromptModelEntity_IAIPromptConfiguration`,
|
|
@@ -34894,12 +35553,13 @@ export declare class MJAIPromptCategoryEntity extends BaseEntity<MJAIPromptCateg
|
|
|
34894
35553
|
* therefore has to be self-contained — a definition cannot `import` a sibling, and `@file:`
|
|
34895
35554
|
* substitutes a whole file rather than splicing one into another. Keeping every AI configuration
|
|
34896
35555
|
* type in ONE file is what makes a shared section possible at all; the cost is that each of the
|
|
34897
|
-
*
|
|
35556
|
+
* six entities emits the full (prefixed) set, including outer types it does not use.
|
|
34898
35557
|
*
|
|
34899
35558
|
* **Lockstep contract**: this file is the JSONType SOURCE; its package-side mirror is
|
|
34900
35559
|
* `packages/AI/Core/src/generic/modelConfiguration.ts` in `@memberjunction/ai`, which runtime code
|
|
34901
|
-
* compiles against. Keep the two in step when
|
|
34902
|
-
* `IAgentSettings` follows with
|
|
35560
|
+
* compiles against (the track types mirror its `realtimeTracks.ts`). Keep the two in step when
|
|
35561
|
+
* adding a section or property — the same pact `IAgentSettings` follows with
|
|
35562
|
+
* `@memberjunction/ai-core-plus`. Core's `modelConfiguration.test.ts` fails when they differ.
|
|
34903
35563
|
*
|
|
34904
35564
|
* **Boundary rule**: anything the engine filters, sorts, or joins on stays a COLUMN (`PowerRank`,
|
|
34905
35565
|
* `IsActive`, `Priority`, `Status` — SQL cannot cheaply predicate into this bag); anything a driver
|
|
@@ -34976,6 +35636,21 @@ export interface MJAIPromptModelEntity_LLMConfigurationSettings {
|
|
|
34976
35636
|
*/
|
|
34977
35637
|
PrefixPromptCache?: boolean | null;
|
|
34978
35638
|
}
|
|
35639
|
+
/**
|
|
35640
|
+
* MJ-normalized turn-detection mode, provider-neutral so a shared catalog is safe on every provider:
|
|
35641
|
+
* - `'default'` — let the provider profile decide (today's behavior).
|
|
35642
|
+
* - `'serverVad'` — classic silence-based server VAD.
|
|
35643
|
+
* - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
|
|
35644
|
+
* - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
|
|
35645
|
+
* to; the forward slot for full-duplex reasoning voice models.
|
|
35646
|
+
*/
|
|
35647
|
+
export type MJAIPromptModelEntity_RealtimeTurnDetectionMode = 'default' | 'serverVad' | 'semanticVad' | 'native';
|
|
35648
|
+
/**
|
|
35649
|
+
* What a turn's input may include (distinct from detection, which decides when a turn ends):
|
|
35650
|
+
* - `'audioActivityOnly'` — audio activity only; video frames are sent deliberately.
|
|
35651
|
+
* - `'audioActivityAndAllVideo'` — audio activity plus every video frame (Gemini 3.8 Live's default).
|
|
35652
|
+
*/
|
|
35653
|
+
export type MJAIPromptModelEntity_RealtimeTurnCoverage = 'audioActivityOnly' | 'audioActivityAndAllVideo';
|
|
34979
35654
|
/**
|
|
34980
35655
|
* MJ-normalized turn-detection settings for realtime (speech-to-speech) models. Every field is
|
|
34981
35656
|
* optional; absent fields contribute nothing. Provider profiles translate this vocabulary to their
|
|
@@ -34983,39 +35658,139 @@ export interface MJAIPromptModelEntity_LLMConfigurationSettings {
|
|
|
34983
35658
|
* default — a wrong inherited value degrades safely, it never rejects a session.
|
|
34984
35659
|
*/
|
|
34985
35660
|
export interface MJAIPromptModelEntity_RealtimeTurnDetectionSettings {
|
|
34986
|
-
/**
|
|
34987
|
-
|
|
34988
|
-
* - `'serverVad'` — classic silence-based server VAD.
|
|
34989
|
-
* - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
|
|
34990
|
-
* - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
|
|
34991
|
-
* to; the forward slot for full-duplex reasoning voice models.
|
|
34992
|
-
*/
|
|
34993
|
-
Mode?: 'default' | 'serverVad' | 'semanticVad' | 'native' | null;
|
|
35661
|
+
/** The normalized mode; absent = `'default'`. */
|
|
35662
|
+
Mode?: MJAIPromptModelEntity_RealtimeTurnDetectionMode;
|
|
34994
35663
|
/** Semantic-VAD aggressiveness (OpenAI `eagerness`); ignored without a mapping. */
|
|
34995
|
-
Eagerness?: 'low' | 'auto' | 'high'
|
|
35664
|
+
Eagerness?: 'low' | 'auto' | 'high';
|
|
34996
35665
|
/** Server-VAD activation threshold (0–1); ignored without a mapping. */
|
|
34997
|
-
Threshold?: number
|
|
35666
|
+
Threshold?: number;
|
|
34998
35667
|
/** Server-VAD trailing-silence duration in ms; ignored without a mapping. */
|
|
34999
|
-
SilenceDurationMs?: number
|
|
35668
|
+
SilenceDurationMs?: number;
|
|
35669
|
+
/**
|
|
35670
|
+
* What a turn's input may include. Declaring it keeps Gemini 3.8 Live's every-frame default (billed,
|
|
35671
|
+
* and consuming context) a decision rather than an inherited cost. Ignored without a mapping.
|
|
35672
|
+
*/
|
|
35673
|
+
Coverage?: MJAIPromptModelEntity_RealtimeTurnCoverage;
|
|
35674
|
+
}
|
|
35675
|
+
/** Which plane handles reasoning: `'local'` (the application/agent loop, the default) or `'remote'`. */
|
|
35676
|
+
export type MJAIPromptModelEntity_RealtimeReasoningPlane = 'local' | 'remote';
|
|
35677
|
+
/** A reasoning effort in MJ's neutral vocabulary; each provider profile maps the values its model accepts. */
|
|
35678
|
+
export type MJAIPromptModelEntity_RealtimeReasoningEffort = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
35679
|
+
/** The remote reasoning target, used when `Plane` is `'remote'`. */
|
|
35680
|
+
export interface MJAIPromptModelEntity_RealtimeRemoteReasoning {
|
|
35681
|
+
/** What the reference denotes: `'model'` (Live, Inworld) or `'hostedAgent'` (ElevenLabs). */
|
|
35682
|
+
Kind?: 'model' | 'hostedAgent';
|
|
35683
|
+
/** The target, e.g. `'gpt-5.6-terra'`, `'anthropic/claude-sonnet-4-6'`, `'MJ Realtime Co-Agent'`. */
|
|
35684
|
+
Ref?: string;
|
|
35685
|
+
/** The target's reasoning effort, for models that support one. */
|
|
35686
|
+
Effort?: MJAIPromptModelEntity_RealtimeReasoningEffort;
|
|
35687
|
+
/** The most output tokens for the remote reasoning pass. */
|
|
35688
|
+
MaxOutputTokens?: number;
|
|
35689
|
+
}
|
|
35690
|
+
/** Reasoning-plane settings for realtime models — dual delegation configuration. */
|
|
35691
|
+
export interface MJAIPromptModelEntity_RealtimeReasoningSettings {
|
|
35692
|
+
/** Absent = `'local'`. Fixed when the session is created. */
|
|
35693
|
+
Plane?: MJAIPromptModelEntity_RealtimeReasoningPlane;
|
|
35694
|
+
/** The remote target when `Plane` is `'remote'`. */
|
|
35695
|
+
Remote?: MJAIPromptModelEntity_RealtimeRemoteReasoning;
|
|
35696
|
+
/**
|
|
35697
|
+
* How hard the model itself reasons (Gemini `thinkingConfig.thinkingLevel`). A profile that cannot
|
|
35698
|
+
* honour the value logs a warning and uses its own default.
|
|
35699
|
+
*/
|
|
35700
|
+
Level?: MJAIPromptModelEntity_RealtimeReasoningEffort;
|
|
35701
|
+
/**
|
|
35702
|
+
* Ask the model for human-readable summaries of its own reasoning (Gemini `includeThoughts`). They
|
|
35703
|
+
* are progress narration, not assistant speech. Absent = off.
|
|
35704
|
+
*/
|
|
35705
|
+
IncludeThoughtSummaries?: boolean;
|
|
35706
|
+
}
|
|
35707
|
+
/** Which way samples flow on a track, relative to the model. */
|
|
35708
|
+
export type MJAIPromptModelEntity_RealtimeTrackDirection = 'inbound' | 'outbound';
|
|
35709
|
+
/** The modalities MJ itself reasons about (cost, consent, transcripts). */
|
|
35710
|
+
export type MJAIPromptModelEntity_RealtimeWellKnownModality = 'audio' | 'video' | 'image' | 'text';
|
|
35711
|
+
/** A modality key: one of the well-known values, or any registered string. */
|
|
35712
|
+
export type MJAIPromptModelEntity_RealtimeModalityKey = MJAIPromptModelEntity_RealtimeWellKnownModality | (string & {});
|
|
35713
|
+
/** How a track's usage is metered. */
|
|
35714
|
+
export type MJAIPromptModelEntity_RealtimeTrackUsageBasis = 'tokens' | 'seconds' | 'frames' | 'bytes';
|
|
35715
|
+
/**
|
|
35716
|
+
* One directional stream of one modality, as {@link MJAIPromptModelEntity_RealtimeConfigurationSettings.RequestedTracks}
|
|
35717
|
+
* requests it. Mirrors the track descriptor in `@memberjunction/ai` (`realtimeTracks.ts`).
|
|
35718
|
+
*/
|
|
35719
|
+
export interface MJAIPromptModelEntity_RealtimeTrackDescriptor {
|
|
35720
|
+
/** The modality this track carries. */
|
|
35721
|
+
Modality: MJAIPromptModelEntity_RealtimeModalityKey;
|
|
35722
|
+
/** Which way samples flow, relative to the model. */
|
|
35723
|
+
Direction: MJAIPromptModelEntity_RealtimeTrackDirection;
|
|
35724
|
+
/** Wire encoding, e.g. `'audio/pcm;rate=16000'` or `'image/jpeg'`; absent = the profile's default. */
|
|
35725
|
+
Encoding?: string;
|
|
35726
|
+
/** Sample or frame cadence: fps for video, Hz for audio. */
|
|
35727
|
+
Rate?: number;
|
|
35728
|
+
/** How this track is metered; absent = the session's own basis. */
|
|
35729
|
+
UsageBasis?: readonly MJAIPromptModelEntity_RealtimeTrackUsageBasis[];
|
|
35730
|
+
/** Whether establishing this track needs an explicit human grant (camera, screen, microphone). */
|
|
35731
|
+
RequiresConsent?: boolean;
|
|
35732
|
+
/** Whether the session needs this track (`true`) or treats it as best-effort (`false`). */
|
|
35733
|
+
Required?: boolean;
|
|
35734
|
+
/** Which source feeds this track, when several streams of one modality and direction can exist. */
|
|
35735
|
+
SourceID?: string;
|
|
35736
|
+
/** A human-readable name for that source ("Whiteboard", "Camera"). */
|
|
35737
|
+
Label?: string;
|
|
35000
35738
|
}
|
|
35001
35739
|
/**
|
|
35002
|
-
*
|
|
35003
|
-
* `'
|
|
35740
|
+
* Which server signal means "the session has gone idle and deferred work may be flushed":
|
|
35741
|
+
* `'turnComplete'` (the default) or `'interactionStatus'`, for models with asynchronous reasoning
|
|
35742
|
+
* whose `turnComplete` arrives while they still reason and call tools.
|
|
35004
35743
|
*/
|
|
35005
|
-
export
|
|
35744
|
+
export type MJAIPromptModelEntity_RealtimeIdleSignal = 'turnComplete' | 'interactionStatus';
|
|
35745
|
+
/** Tool-execution semantics a model permits. Capability declarations, not requests. */
|
|
35746
|
+
export interface MJAIPromptModelEntity_RealtimeToolingSettings {
|
|
35006
35747
|
/**
|
|
35007
|
-
*
|
|
35008
|
-
*
|
|
35009
|
-
* - `'remote'` — delegated to remote model or hosted agent.
|
|
35748
|
+
* Whether synchronous blocking tool execution is legal. Absent = permitted. `false` on models that
|
|
35749
|
+
* reject blocking mode outright (Gemini 3.8 Live Extended Thinking).
|
|
35010
35750
|
*/
|
|
35011
|
-
|
|
35012
|
-
/**
|
|
35013
|
-
|
|
35014
|
-
|
|
35015
|
-
|
|
35016
|
-
|
|
35017
|
-
|
|
35018
|
-
|
|
35751
|
+
SupportsBlockingExecution?: boolean;
|
|
35752
|
+
/**
|
|
35753
|
+
* Whether per-function scheduling hints are legal (Gemini `SILENT` / `WHEN_IDLE` / `INTERRUPTED`).
|
|
35754
|
+
* Absent = not supported.
|
|
35755
|
+
*/
|
|
35756
|
+
SupportsScheduling?: boolean;
|
|
35757
|
+
/** Preferred function-calling behavior. */
|
|
35758
|
+
Behavior?: 'BLOCKING' | 'NON_BLOCKING';
|
|
35759
|
+
}
|
|
35760
|
+
/**
|
|
35761
|
+
* One price for a quantity a realtime session produces, in one currency. It applies only when all
|
|
35762
|
+
* three fields are set; a partial price, or a unit or currency the reader does not handle, counts
|
|
35763
|
+
* as no price.
|
|
35764
|
+
*/
|
|
35765
|
+
export interface MJAIPromptModelEntity_RealtimeUnitPrice {
|
|
35766
|
+
/** The amount charged per {@link MJAIPromptModelEntity_RealtimeUnitPrice.Unit}. Never negative. */
|
|
35767
|
+
Price?: number | null;
|
|
35768
|
+
/**
|
|
35769
|
+
* The billing unit, named as in `MJ: AI Model Price Unit Types`. `'Per Minute'`: one minute.
|
|
35770
|
+
* `'Per 1M Tokens'`: one million tokens.
|
|
35771
|
+
*/
|
|
35772
|
+
Unit?: 'Per Minute' | 'Per 1M Tokens' | null;
|
|
35773
|
+
/** ISO 4217 currency code, uppercase (e.g. `USD`), as on `MJ: AI Model Costs`. */
|
|
35774
|
+
Currency?: string | null;
|
|
35775
|
+
}
|
|
35776
|
+
/**
|
|
35777
|
+
* Prices for realtime output that the model's cost rows (`MJ: AI Model Costs`) do not price on
|
|
35778
|
+
* their own; the cost rows stay the authority for token prices. A price belongs to the host that
|
|
35779
|
+
* charges it, so set this on the model-vendor row: a price on the model or the model type would
|
|
35780
|
+
* reach every vendor that serves the model.
|
|
35781
|
+
*/
|
|
35782
|
+
export interface MJAIPromptModelEntity_RealtimePricingSettings {
|
|
35783
|
+
/**
|
|
35784
|
+
* The price of avatar video output, charged on top of the session's token cost. `'Per Minute'`
|
|
35785
|
+
* prices the seconds of avatar video the model generates; `'Per 1M Tokens'` prices the output
|
|
35786
|
+
* tokens the provider counts as video. Set the price and its unit together: the cascade merges
|
|
35787
|
+
* per key, so a layer that sets only one of them keeps the other from the layer below.
|
|
35788
|
+
*
|
|
35789
|
+
* Unverified until checked against Google's bill (#5312): Gemini 3.8 Live on Vertex AI is
|
|
35790
|
+
* seeded at $0.37152 per minute, derived from Google's $1.00 per 1M avatar video output tokens
|
|
35791
|
+
* at 6,192 tokens per second.
|
|
35792
|
+
*/
|
|
35793
|
+
AvatarVideoOutput?: MJAIPromptModelEntity_RealtimeUnitPrice | null;
|
|
35019
35794
|
}
|
|
35020
35795
|
/** Realtime (speech-to-speech) knobs. */
|
|
35021
35796
|
export interface MJAIPromptModelEntity_RealtimeConfigurationSettings {
|
|
@@ -35029,7 +35804,31 @@ export interface MJAIPromptModelEntity_RealtimeConfigurationSettings {
|
|
|
35029
35804
|
/**
|
|
35030
35805
|
* Reasoning plane settings — dual delegation configuration. Absent defaults to `'local'`.
|
|
35031
35806
|
*/
|
|
35032
|
-
Reasoning?: MJAIPromptModelEntity_RealtimeReasoningSettings
|
|
35807
|
+
Reasoning?: MJAIPromptModelEntity_RealtimeReasoningSettings;
|
|
35808
|
+
/**
|
|
35809
|
+
* Whether this realtime model natively supports full-duplex conversational audio
|
|
35810
|
+
* (simultaneous speaking and listening with natural interruptions).
|
|
35811
|
+
*
|
|
35812
|
+
* When true, full-duplex models do not receive turn-taking tools or an energy-VAD floor gate,
|
|
35813
|
+
* allowing the provider's native full-duplex model to handle natural turn transitions.
|
|
35814
|
+
* Cascades AIModelType -> Vendor ModelDefaults -> AIModel -> AIModelVendor.
|
|
35815
|
+
*/
|
|
35816
|
+
FullDuplex?: boolean | null;
|
|
35817
|
+
/** Tool-execution semantics this model permits. Absent = the profile's own defaults. */
|
|
35818
|
+
Tooling?: MJAIPromptModelEntity_RealtimeToolingSettings;
|
|
35819
|
+
/**
|
|
35820
|
+
* Media tracks a session asks the model to establish beyond audio. Absent or empty establishes
|
|
35821
|
+
* audio only, so a video track exists only because something asked for it and never arrives as an
|
|
35822
|
+
* inherited cost. Requests are intersected with what the model supports.
|
|
35823
|
+
*/
|
|
35824
|
+
RequestedTracks?: readonly MJAIPromptModelEntity_RealtimeTrackDescriptor[];
|
|
35825
|
+
/** Which server signal means the session has gone idle. Absent = `'turnComplete'`. */
|
|
35826
|
+
IdleSignal?: MJAIPromptModelEntity_RealtimeIdleSignal;
|
|
35827
|
+
/**
|
|
35828
|
+
* Prices for output the token cost rows do not cover, such as avatar video. Set it on the
|
|
35829
|
+
* model-vendor row.
|
|
35830
|
+
*/
|
|
35831
|
+
Pricing?: MJAIPromptModelEntity_RealtimePricingSettings | null;
|
|
35033
35832
|
}
|
|
35034
35833
|
/** Vision knobs. Reserved — no consumers yet. */
|
|
35035
35834
|
export interface MJAIPromptModelEntity_VisionConfigurationSettings {
|
|
@@ -35039,6 +35838,22 @@ export interface MJAIPromptModelEntity_VisionConfigurationSettings {
|
|
|
35039
35838
|
export interface MJAIPromptModelEntity_AudioConfigurationSettings {
|
|
35040
35839
|
[key: string]: unknown;
|
|
35041
35840
|
}
|
|
35841
|
+
/**
|
|
35842
|
+
* Privacy posture of the model deployment this configuration describes. Set it on the catalog layers
|
|
35843
|
+
* (`MJ: AI Models`, `MJ: AI Model Vendors`, a vendor's `ModelDefaults`): data retention is a property of
|
|
35844
|
+
* how a model is SERVED, so the vendor row is usually where it is true.
|
|
35845
|
+
*/
|
|
35846
|
+
export interface MJAIPromptModelEntity_PrivacyConfigurationSettings {
|
|
35847
|
+
/**
|
|
35848
|
+
* Whether this model is served under a zero-data-retention agreement: the provider does not store
|
|
35849
|
+
* prompts, audio, images or outputs beyond serving the request. `true` is a positive claim that
|
|
35850
|
+
* somebody verified; absent, `null` and `false` all mean "not declared", never "retained", because
|
|
35851
|
+
* an undeclared model is not known to be bad. It is read by realtime channel exposure policy:
|
|
35852
|
+
* an agent that requires zero data retention for a channel's `'state'` or `'pixels'` exposure has
|
|
35853
|
+
* that exposure lowered on any model that does not declare `true` here.
|
|
35854
|
+
*/
|
|
35855
|
+
ZeroDataRetention?: boolean | null;
|
|
35856
|
+
}
|
|
35042
35857
|
/**
|
|
35043
35858
|
* Typed-decision knobs, consumed at call time by the decision runner. They declare what a decision
|
|
35044
35859
|
* model accepts, so an oversized request can be refused with a clear message before the call,
|
|
@@ -35073,6 +35888,8 @@ export interface MJAIPromptModelEntity_IAIModelConfiguration {
|
|
|
35073
35888
|
Audio?: MJAIPromptModelEntity_AudioConfigurationSettings | null;
|
|
35074
35889
|
/** Typed-decision limits. Honored at the catalog layers. */
|
|
35075
35890
|
Decision?: MJAIPromptModelEntity_DecisionConfigurationSettings | null;
|
|
35891
|
+
/** Privacy posture of the model deployment. Honored at the catalog layers. */
|
|
35892
|
+
Privacy?: MJAIPromptModelEntity_PrivacyConfigurationSettings | null;
|
|
35076
35893
|
}
|
|
35077
35894
|
/**
|
|
35078
35895
|
* The `PromptConfiguration` column on `MJ: AI Prompts` — per-prompt call-time knobs, layered ON TOP of the
|
|
@@ -35092,6 +35909,8 @@ export interface MJAIPromptModelEntity_IAIPromptConfiguration {
|
|
|
35092
35909
|
Audio?: MJAIPromptModelEntity_AudioConfigurationSettings | null;
|
|
35093
35910
|
/** Typed-decision limits. Reserved at this layer. */
|
|
35094
35911
|
Decision?: MJAIPromptModelEntity_DecisionConfigurationSettings | null;
|
|
35912
|
+
/** Privacy posture. Reserved at this layer. */
|
|
35913
|
+
Privacy?: MJAIPromptModelEntity_PrivacyConfigurationSettings | null;
|
|
35095
35914
|
}
|
|
35096
35915
|
/**
|
|
35097
35916
|
* The `PromptConfiguration` column on `MJ: AI Prompt Models` — the most specific layer, overriding both
|
|
@@ -35108,6 +35927,8 @@ export interface MJAIPromptModelEntity_IAIPromptModelConfiguration {
|
|
|
35108
35927
|
Audio?: MJAIPromptModelEntity_AudioConfigurationSettings | null;
|
|
35109
35928
|
/** Typed-decision limits. Reserved at this layer. */
|
|
35110
35929
|
Decision?: MJAIPromptModelEntity_DecisionConfigurationSettings | null;
|
|
35930
|
+
/** Privacy posture. Reserved at this layer. */
|
|
35931
|
+
Privacy?: MJAIPromptModelEntity_PrivacyConfigurationSettings | null;
|
|
35111
35932
|
}
|
|
35112
35933
|
/**
|
|
35113
35934
|
* `MJ: AI Vendors . Configuration` — the vendor's own configuration bag. General-purpose: a vendor
|
|
@@ -36591,7 +37412,8 @@ export declare class MJAIPromptTypeEntity extends BaseEntity<MJAIPromptTypeEntit
|
|
|
36591
37412
|
* Two kinds of type live here, and the distinction is the whole point of the file:
|
|
36592
37413
|
*
|
|
36593
37414
|
* 1. **Shared modality sections** (`MJAIPromptEntity_LLMConfigurationSettings`, `MJAIPromptEntity_RealtimeConfigurationSettings`,
|
|
36594
|
-
* `MJAIPromptEntity_VisionConfigurationSettings`, `MJAIPromptEntity_AudioConfigurationSettings`, `MJAIPromptEntity_DecisionConfigurationSettings
|
|
37415
|
+
* `MJAIPromptEntity_VisionConfigurationSettings`, `MJAIPromptEntity_AudioConfigurationSettings`, `MJAIPromptEntity_DecisionConfigurationSettings`,
|
|
37416
|
+
* `MJAIPromptEntity_PrivacyConfigurationSettings`) —
|
|
36595
37417
|
* what "the LLM configuration"
|
|
36596
37418
|
* MEANS, defined once and reused by every layer that carries a configuration bag.
|
|
36597
37419
|
* 2. **Per-table outer types** (`MJAIPromptEntity_IAIModelConfiguration`, `MJAIPromptEntity_IAIPromptConfiguration`,
|
|
@@ -36617,12 +37439,13 @@ export declare class MJAIPromptTypeEntity extends BaseEntity<MJAIPromptTypeEntit
|
|
|
36617
37439
|
* therefore has to be self-contained — a definition cannot `import` a sibling, and `@file:`
|
|
36618
37440
|
* substitutes a whole file rather than splicing one into another. Keeping every AI configuration
|
|
36619
37441
|
* type in ONE file is what makes a shared section possible at all; the cost is that each of the
|
|
36620
|
-
*
|
|
37442
|
+
* six entities emits the full (prefixed) set, including outer types it does not use.
|
|
36621
37443
|
*
|
|
36622
37444
|
* **Lockstep contract**: this file is the JSONType SOURCE; its package-side mirror is
|
|
36623
37445
|
* `packages/AI/Core/src/generic/modelConfiguration.ts` in `@memberjunction/ai`, which runtime code
|
|
36624
|
-
* compiles against. Keep the two in step when
|
|
36625
|
-
* `IAgentSettings` follows with
|
|
37446
|
+
* compiles against (the track types mirror its `realtimeTracks.ts`). Keep the two in step when
|
|
37447
|
+
* adding a section or property — the same pact `IAgentSettings` follows with
|
|
37448
|
+
* `@memberjunction/ai-core-plus`. Core's `modelConfiguration.test.ts` fails when they differ.
|
|
36626
37449
|
*
|
|
36627
37450
|
* **Boundary rule**: anything the engine filters, sorts, or joins on stays a COLUMN (`PowerRank`,
|
|
36628
37451
|
* `IsActive`, `Priority`, `Status` — SQL cannot cheaply predicate into this bag); anything a driver
|
|
@@ -36699,6 +37522,21 @@ export interface MJAIPromptEntity_LLMConfigurationSettings {
|
|
|
36699
37522
|
*/
|
|
36700
37523
|
PrefixPromptCache?: boolean | null;
|
|
36701
37524
|
}
|
|
37525
|
+
/**
|
|
37526
|
+
* MJ-normalized turn-detection mode, provider-neutral so a shared catalog is safe on every provider:
|
|
37527
|
+
* - `'default'` — let the provider profile decide (today's behavior).
|
|
37528
|
+
* - `'serverVad'` — classic silence-based server VAD.
|
|
37529
|
+
* - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
|
|
37530
|
+
* - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
|
|
37531
|
+
* to; the forward slot for full-duplex reasoning voice models.
|
|
37532
|
+
*/
|
|
37533
|
+
export type MJAIPromptEntity_RealtimeTurnDetectionMode = 'default' | 'serverVad' | 'semanticVad' | 'native';
|
|
37534
|
+
/**
|
|
37535
|
+
* What a turn's input may include (distinct from detection, which decides when a turn ends):
|
|
37536
|
+
* - `'audioActivityOnly'` — audio activity only; video frames are sent deliberately.
|
|
37537
|
+
* - `'audioActivityAndAllVideo'` — audio activity plus every video frame (Gemini 3.8 Live's default).
|
|
37538
|
+
*/
|
|
37539
|
+
export type MJAIPromptEntity_RealtimeTurnCoverage = 'audioActivityOnly' | 'audioActivityAndAllVideo';
|
|
36702
37540
|
/**
|
|
36703
37541
|
* MJ-normalized turn-detection settings for realtime (speech-to-speech) models. Every field is
|
|
36704
37542
|
* optional; absent fields contribute nothing. Provider profiles translate this vocabulary to their
|
|
@@ -36706,39 +37544,139 @@ export interface MJAIPromptEntity_LLMConfigurationSettings {
|
|
|
36706
37544
|
* default — a wrong inherited value degrades safely, it never rejects a session.
|
|
36707
37545
|
*/
|
|
36708
37546
|
export interface MJAIPromptEntity_RealtimeTurnDetectionSettings {
|
|
36709
|
-
/**
|
|
36710
|
-
|
|
36711
|
-
* - `'serverVad'` — classic silence-based server VAD.
|
|
36712
|
-
* - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
|
|
36713
|
-
* - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
|
|
36714
|
-
* to; the forward slot for full-duplex reasoning voice models.
|
|
36715
|
-
*/
|
|
36716
|
-
Mode?: 'default' | 'serverVad' | 'semanticVad' | 'native' | null;
|
|
37547
|
+
/** The normalized mode; absent = `'default'`. */
|
|
37548
|
+
Mode?: MJAIPromptEntity_RealtimeTurnDetectionMode;
|
|
36717
37549
|
/** Semantic-VAD aggressiveness (OpenAI `eagerness`); ignored without a mapping. */
|
|
36718
|
-
Eagerness?: 'low' | 'auto' | 'high'
|
|
37550
|
+
Eagerness?: 'low' | 'auto' | 'high';
|
|
36719
37551
|
/** Server-VAD activation threshold (0–1); ignored without a mapping. */
|
|
36720
|
-
Threshold?: number
|
|
37552
|
+
Threshold?: number;
|
|
36721
37553
|
/** Server-VAD trailing-silence duration in ms; ignored without a mapping. */
|
|
36722
|
-
SilenceDurationMs?: number
|
|
37554
|
+
SilenceDurationMs?: number;
|
|
37555
|
+
/**
|
|
37556
|
+
* What a turn's input may include. Declaring it keeps Gemini 3.8 Live's every-frame default (billed,
|
|
37557
|
+
* and consuming context) a decision rather than an inherited cost. Ignored without a mapping.
|
|
37558
|
+
*/
|
|
37559
|
+
Coverage?: MJAIPromptEntity_RealtimeTurnCoverage;
|
|
37560
|
+
}
|
|
37561
|
+
/** Which plane handles reasoning: `'local'` (the application/agent loop, the default) or `'remote'`. */
|
|
37562
|
+
export type MJAIPromptEntity_RealtimeReasoningPlane = 'local' | 'remote';
|
|
37563
|
+
/** A reasoning effort in MJ's neutral vocabulary; each provider profile maps the values its model accepts. */
|
|
37564
|
+
export type MJAIPromptEntity_RealtimeReasoningEffort = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
37565
|
+
/** The remote reasoning target, used when `Plane` is `'remote'`. */
|
|
37566
|
+
export interface MJAIPromptEntity_RealtimeRemoteReasoning {
|
|
37567
|
+
/** What the reference denotes: `'model'` (Live, Inworld) or `'hostedAgent'` (ElevenLabs). */
|
|
37568
|
+
Kind?: 'model' | 'hostedAgent';
|
|
37569
|
+
/** The target, e.g. `'gpt-5.6-terra'`, `'anthropic/claude-sonnet-4-6'`, `'MJ Realtime Co-Agent'`. */
|
|
37570
|
+
Ref?: string;
|
|
37571
|
+
/** The target's reasoning effort, for models that support one. */
|
|
37572
|
+
Effort?: MJAIPromptEntity_RealtimeReasoningEffort;
|
|
37573
|
+
/** The most output tokens for the remote reasoning pass. */
|
|
37574
|
+
MaxOutputTokens?: number;
|
|
37575
|
+
}
|
|
37576
|
+
/** Reasoning-plane settings for realtime models — dual delegation configuration. */
|
|
37577
|
+
export interface MJAIPromptEntity_RealtimeReasoningSettings {
|
|
37578
|
+
/** Absent = `'local'`. Fixed when the session is created. */
|
|
37579
|
+
Plane?: MJAIPromptEntity_RealtimeReasoningPlane;
|
|
37580
|
+
/** The remote target when `Plane` is `'remote'`. */
|
|
37581
|
+
Remote?: MJAIPromptEntity_RealtimeRemoteReasoning;
|
|
37582
|
+
/**
|
|
37583
|
+
* How hard the model itself reasons (Gemini `thinkingConfig.thinkingLevel`). A profile that cannot
|
|
37584
|
+
* honour the value logs a warning and uses its own default.
|
|
37585
|
+
*/
|
|
37586
|
+
Level?: MJAIPromptEntity_RealtimeReasoningEffort;
|
|
37587
|
+
/**
|
|
37588
|
+
* Ask the model for human-readable summaries of its own reasoning (Gemini `includeThoughts`). They
|
|
37589
|
+
* are progress narration, not assistant speech. Absent = off.
|
|
37590
|
+
*/
|
|
37591
|
+
IncludeThoughtSummaries?: boolean;
|
|
37592
|
+
}
|
|
37593
|
+
/** Which way samples flow on a track, relative to the model. */
|
|
37594
|
+
export type MJAIPromptEntity_RealtimeTrackDirection = 'inbound' | 'outbound';
|
|
37595
|
+
/** The modalities MJ itself reasons about (cost, consent, transcripts). */
|
|
37596
|
+
export type MJAIPromptEntity_RealtimeWellKnownModality = 'audio' | 'video' | 'image' | 'text';
|
|
37597
|
+
/** A modality key: one of the well-known values, or any registered string. */
|
|
37598
|
+
export type MJAIPromptEntity_RealtimeModalityKey = MJAIPromptEntity_RealtimeWellKnownModality | (string & {});
|
|
37599
|
+
/** How a track's usage is metered. */
|
|
37600
|
+
export type MJAIPromptEntity_RealtimeTrackUsageBasis = 'tokens' | 'seconds' | 'frames' | 'bytes';
|
|
37601
|
+
/**
|
|
37602
|
+
* One directional stream of one modality, as {@link MJAIPromptEntity_RealtimeConfigurationSettings.RequestedTracks}
|
|
37603
|
+
* requests it. Mirrors the track descriptor in `@memberjunction/ai` (`realtimeTracks.ts`).
|
|
37604
|
+
*/
|
|
37605
|
+
export interface MJAIPromptEntity_RealtimeTrackDescriptor {
|
|
37606
|
+
/** The modality this track carries. */
|
|
37607
|
+
Modality: MJAIPromptEntity_RealtimeModalityKey;
|
|
37608
|
+
/** Which way samples flow, relative to the model. */
|
|
37609
|
+
Direction: MJAIPromptEntity_RealtimeTrackDirection;
|
|
37610
|
+
/** Wire encoding, e.g. `'audio/pcm;rate=16000'` or `'image/jpeg'`; absent = the profile's default. */
|
|
37611
|
+
Encoding?: string;
|
|
37612
|
+
/** Sample or frame cadence: fps for video, Hz for audio. */
|
|
37613
|
+
Rate?: number;
|
|
37614
|
+
/** How this track is metered; absent = the session's own basis. */
|
|
37615
|
+
UsageBasis?: readonly MJAIPromptEntity_RealtimeTrackUsageBasis[];
|
|
37616
|
+
/** Whether establishing this track needs an explicit human grant (camera, screen, microphone). */
|
|
37617
|
+
RequiresConsent?: boolean;
|
|
37618
|
+
/** Whether the session needs this track (`true`) or treats it as best-effort (`false`). */
|
|
37619
|
+
Required?: boolean;
|
|
37620
|
+
/** Which source feeds this track, when several streams of one modality and direction can exist. */
|
|
37621
|
+
SourceID?: string;
|
|
37622
|
+
/** A human-readable name for that source ("Whiteboard", "Camera"). */
|
|
37623
|
+
Label?: string;
|
|
36723
37624
|
}
|
|
36724
37625
|
/**
|
|
36725
|
-
*
|
|
36726
|
-
* `'
|
|
37626
|
+
* Which server signal means "the session has gone idle and deferred work may be flushed":
|
|
37627
|
+
* `'turnComplete'` (the default) or `'interactionStatus'`, for models with asynchronous reasoning
|
|
37628
|
+
* whose `turnComplete` arrives while they still reason and call tools.
|
|
36727
37629
|
*/
|
|
36728
|
-
export
|
|
37630
|
+
export type MJAIPromptEntity_RealtimeIdleSignal = 'turnComplete' | 'interactionStatus';
|
|
37631
|
+
/** Tool-execution semantics a model permits. Capability declarations, not requests. */
|
|
37632
|
+
export interface MJAIPromptEntity_RealtimeToolingSettings {
|
|
36729
37633
|
/**
|
|
36730
|
-
*
|
|
36731
|
-
*
|
|
36732
|
-
* - `'remote'` — delegated to remote model or hosted agent.
|
|
37634
|
+
* Whether synchronous blocking tool execution is legal. Absent = permitted. `false` on models that
|
|
37635
|
+
* reject blocking mode outright (Gemini 3.8 Live Extended Thinking).
|
|
36733
37636
|
*/
|
|
36734
|
-
|
|
36735
|
-
/**
|
|
36736
|
-
|
|
36737
|
-
|
|
36738
|
-
|
|
36739
|
-
|
|
36740
|
-
|
|
36741
|
-
|
|
37637
|
+
SupportsBlockingExecution?: boolean;
|
|
37638
|
+
/**
|
|
37639
|
+
* Whether per-function scheduling hints are legal (Gemini `SILENT` / `WHEN_IDLE` / `INTERRUPTED`).
|
|
37640
|
+
* Absent = not supported.
|
|
37641
|
+
*/
|
|
37642
|
+
SupportsScheduling?: boolean;
|
|
37643
|
+
/** Preferred function-calling behavior. */
|
|
37644
|
+
Behavior?: 'BLOCKING' | 'NON_BLOCKING';
|
|
37645
|
+
}
|
|
37646
|
+
/**
|
|
37647
|
+
* One price for a quantity a realtime session produces, in one currency. It applies only when all
|
|
37648
|
+
* three fields are set; a partial price, or a unit or currency the reader does not handle, counts
|
|
37649
|
+
* as no price.
|
|
37650
|
+
*/
|
|
37651
|
+
export interface MJAIPromptEntity_RealtimeUnitPrice {
|
|
37652
|
+
/** The amount charged per {@link MJAIPromptEntity_RealtimeUnitPrice.Unit}. Never negative. */
|
|
37653
|
+
Price?: number | null;
|
|
37654
|
+
/**
|
|
37655
|
+
* The billing unit, named as in `MJ: AI Model Price Unit Types`. `'Per Minute'`: one minute.
|
|
37656
|
+
* `'Per 1M Tokens'`: one million tokens.
|
|
37657
|
+
*/
|
|
37658
|
+
Unit?: 'Per Minute' | 'Per 1M Tokens' | null;
|
|
37659
|
+
/** ISO 4217 currency code, uppercase (e.g. `USD`), as on `MJ: AI Model Costs`. */
|
|
37660
|
+
Currency?: string | null;
|
|
37661
|
+
}
|
|
37662
|
+
/**
|
|
37663
|
+
* Prices for realtime output that the model's cost rows (`MJ: AI Model Costs`) do not price on
|
|
37664
|
+
* their own; the cost rows stay the authority for token prices. A price belongs to the host that
|
|
37665
|
+
* charges it, so set this on the model-vendor row: a price on the model or the model type would
|
|
37666
|
+
* reach every vendor that serves the model.
|
|
37667
|
+
*/
|
|
37668
|
+
export interface MJAIPromptEntity_RealtimePricingSettings {
|
|
37669
|
+
/**
|
|
37670
|
+
* The price of avatar video output, charged on top of the session's token cost. `'Per Minute'`
|
|
37671
|
+
* prices the seconds of avatar video the model generates; `'Per 1M Tokens'` prices the output
|
|
37672
|
+
* tokens the provider counts as video. Set the price and its unit together: the cascade merges
|
|
37673
|
+
* per key, so a layer that sets only one of them keeps the other from the layer below.
|
|
37674
|
+
*
|
|
37675
|
+
* Unverified until checked against Google's bill (#5312): Gemini 3.8 Live on Vertex AI is
|
|
37676
|
+
* seeded at $0.37152 per minute, derived from Google's $1.00 per 1M avatar video output tokens
|
|
37677
|
+
* at 6,192 tokens per second.
|
|
37678
|
+
*/
|
|
37679
|
+
AvatarVideoOutput?: MJAIPromptEntity_RealtimeUnitPrice | null;
|
|
36742
37680
|
}
|
|
36743
37681
|
/** Realtime (speech-to-speech) knobs. */
|
|
36744
37682
|
export interface MJAIPromptEntity_RealtimeConfigurationSettings {
|
|
@@ -36752,7 +37690,31 @@ export interface MJAIPromptEntity_RealtimeConfigurationSettings {
|
|
|
36752
37690
|
/**
|
|
36753
37691
|
* Reasoning plane settings — dual delegation configuration. Absent defaults to `'local'`.
|
|
36754
37692
|
*/
|
|
36755
|
-
Reasoning?: MJAIPromptEntity_RealtimeReasoningSettings
|
|
37693
|
+
Reasoning?: MJAIPromptEntity_RealtimeReasoningSettings;
|
|
37694
|
+
/**
|
|
37695
|
+
* Whether this realtime model natively supports full-duplex conversational audio
|
|
37696
|
+
* (simultaneous speaking and listening with natural interruptions).
|
|
37697
|
+
*
|
|
37698
|
+
* When true, full-duplex models do not receive turn-taking tools or an energy-VAD floor gate,
|
|
37699
|
+
* allowing the provider's native full-duplex model to handle natural turn transitions.
|
|
37700
|
+
* Cascades AIModelType -> Vendor ModelDefaults -> AIModel -> AIModelVendor.
|
|
37701
|
+
*/
|
|
37702
|
+
FullDuplex?: boolean | null;
|
|
37703
|
+
/** Tool-execution semantics this model permits. Absent = the profile's own defaults. */
|
|
37704
|
+
Tooling?: MJAIPromptEntity_RealtimeToolingSettings;
|
|
37705
|
+
/**
|
|
37706
|
+
* Media tracks a session asks the model to establish beyond audio. Absent or empty establishes
|
|
37707
|
+
* audio only, so a video track exists only because something asked for it and never arrives as an
|
|
37708
|
+
* inherited cost. Requests are intersected with what the model supports.
|
|
37709
|
+
*/
|
|
37710
|
+
RequestedTracks?: readonly MJAIPromptEntity_RealtimeTrackDescriptor[];
|
|
37711
|
+
/** Which server signal means the session has gone idle. Absent = `'turnComplete'`. */
|
|
37712
|
+
IdleSignal?: MJAIPromptEntity_RealtimeIdleSignal;
|
|
37713
|
+
/**
|
|
37714
|
+
* Prices for output the token cost rows do not cover, such as avatar video. Set it on the
|
|
37715
|
+
* model-vendor row.
|
|
37716
|
+
*/
|
|
37717
|
+
Pricing?: MJAIPromptEntity_RealtimePricingSettings | null;
|
|
36756
37718
|
}
|
|
36757
37719
|
/** Vision knobs. Reserved — no consumers yet. */
|
|
36758
37720
|
export interface MJAIPromptEntity_VisionConfigurationSettings {
|
|
@@ -36762,6 +37724,22 @@ export interface MJAIPromptEntity_VisionConfigurationSettings {
|
|
|
36762
37724
|
export interface MJAIPromptEntity_AudioConfigurationSettings {
|
|
36763
37725
|
[key: string]: unknown;
|
|
36764
37726
|
}
|
|
37727
|
+
/**
|
|
37728
|
+
* Privacy posture of the model deployment this configuration describes. Set it on the catalog layers
|
|
37729
|
+
* (`MJ: AI Models`, `MJ: AI Model Vendors`, a vendor's `ModelDefaults`): data retention is a property of
|
|
37730
|
+
* how a model is SERVED, so the vendor row is usually where it is true.
|
|
37731
|
+
*/
|
|
37732
|
+
export interface MJAIPromptEntity_PrivacyConfigurationSettings {
|
|
37733
|
+
/**
|
|
37734
|
+
* Whether this model is served under a zero-data-retention agreement: the provider does not store
|
|
37735
|
+
* prompts, audio, images or outputs beyond serving the request. `true` is a positive claim that
|
|
37736
|
+
* somebody verified; absent, `null` and `false` all mean "not declared", never "retained", because
|
|
37737
|
+
* an undeclared model is not known to be bad. It is read by realtime channel exposure policy:
|
|
37738
|
+
* an agent that requires zero data retention for a channel's `'state'` or `'pixels'` exposure has
|
|
37739
|
+
* that exposure lowered on any model that does not declare `true` here.
|
|
37740
|
+
*/
|
|
37741
|
+
ZeroDataRetention?: boolean | null;
|
|
37742
|
+
}
|
|
36765
37743
|
/**
|
|
36766
37744
|
* Typed-decision knobs, consumed at call time by the decision runner. They declare what a decision
|
|
36767
37745
|
* model accepts, so an oversized request can be refused with a clear message before the call,
|
|
@@ -36796,6 +37774,8 @@ export interface MJAIPromptEntity_IAIModelConfiguration {
|
|
|
36796
37774
|
Audio?: MJAIPromptEntity_AudioConfigurationSettings | null;
|
|
36797
37775
|
/** Typed-decision limits. Honored at the catalog layers. */
|
|
36798
37776
|
Decision?: MJAIPromptEntity_DecisionConfigurationSettings | null;
|
|
37777
|
+
/** Privacy posture of the model deployment. Honored at the catalog layers. */
|
|
37778
|
+
Privacy?: MJAIPromptEntity_PrivacyConfigurationSettings | null;
|
|
36799
37779
|
}
|
|
36800
37780
|
/**
|
|
36801
37781
|
* The `PromptConfiguration` column on `MJ: AI Prompts` — per-prompt call-time knobs, layered ON TOP of the
|
|
@@ -36815,6 +37795,8 @@ export interface MJAIPromptEntity_IAIPromptConfiguration {
|
|
|
36815
37795
|
Audio?: MJAIPromptEntity_AudioConfigurationSettings | null;
|
|
36816
37796
|
/** Typed-decision limits. Reserved at this layer. */
|
|
36817
37797
|
Decision?: MJAIPromptEntity_DecisionConfigurationSettings | null;
|
|
37798
|
+
/** Privacy posture. Reserved at this layer. */
|
|
37799
|
+
Privacy?: MJAIPromptEntity_PrivacyConfigurationSettings | null;
|
|
36818
37800
|
}
|
|
36819
37801
|
/**
|
|
36820
37802
|
* The `PromptConfiguration` column on `MJ: AI Prompt Models` — the most specific layer, overriding both
|
|
@@ -36831,6 +37813,8 @@ export interface MJAIPromptEntity_IAIPromptModelConfiguration {
|
|
|
36831
37813
|
Audio?: MJAIPromptEntity_AudioConfigurationSettings | null;
|
|
36832
37814
|
/** Typed-decision limits. Reserved at this layer. */
|
|
36833
37815
|
Decision?: MJAIPromptEntity_DecisionConfigurationSettings | null;
|
|
37816
|
+
/** Privacy posture. Reserved at this layer. */
|
|
37817
|
+
Privacy?: MJAIPromptEntity_PrivacyConfigurationSettings | null;
|
|
36834
37818
|
}
|
|
36835
37819
|
/**
|
|
36836
37820
|
* `MJ: AI Vendors . Configuration` — the vendor's own configuration bag. General-purpose: a vendor
|
|
@@ -38807,7 +39791,8 @@ export declare class MJAIVendorTypeEntity extends BaseEntity<MJAIVendorTypeEntit
|
|
|
38807
39791
|
* Two kinds of type live here, and the distinction is the whole point of the file:
|
|
38808
39792
|
*
|
|
38809
39793
|
* 1. **Shared modality sections** (`MJAIVendorEntity_LLMConfigurationSettings`, `MJAIVendorEntity_RealtimeConfigurationSettings`,
|
|
38810
|
-
* `MJAIVendorEntity_VisionConfigurationSettings`, `MJAIVendorEntity_AudioConfigurationSettings`, `MJAIVendorEntity_DecisionConfigurationSettings
|
|
39794
|
+
* `MJAIVendorEntity_VisionConfigurationSettings`, `MJAIVendorEntity_AudioConfigurationSettings`, `MJAIVendorEntity_DecisionConfigurationSettings`,
|
|
39795
|
+
* `MJAIVendorEntity_PrivacyConfigurationSettings`) —
|
|
38811
39796
|
* what "the LLM configuration"
|
|
38812
39797
|
* MEANS, defined once and reused by every layer that carries a configuration bag.
|
|
38813
39798
|
* 2. **Per-table outer types** (`MJAIVendorEntity_IAIModelConfiguration`, `MJAIVendorEntity_IAIPromptConfiguration`,
|
|
@@ -38833,12 +39818,13 @@ export declare class MJAIVendorTypeEntity extends BaseEntity<MJAIVendorTypeEntit
|
|
|
38833
39818
|
* therefore has to be self-contained — a definition cannot `import` a sibling, and `@file:`
|
|
38834
39819
|
* substitutes a whole file rather than splicing one into another. Keeping every AI configuration
|
|
38835
39820
|
* type in ONE file is what makes a shared section possible at all; the cost is that each of the
|
|
38836
|
-
*
|
|
39821
|
+
* six entities emits the full (prefixed) set, including outer types it does not use.
|
|
38837
39822
|
*
|
|
38838
39823
|
* **Lockstep contract**: this file is the JSONType SOURCE; its package-side mirror is
|
|
38839
39824
|
* `packages/AI/Core/src/generic/modelConfiguration.ts` in `@memberjunction/ai`, which runtime code
|
|
38840
|
-
* compiles against. Keep the two in step when
|
|
38841
|
-
* `IAgentSettings` follows with
|
|
39825
|
+
* compiles against (the track types mirror its `realtimeTracks.ts`). Keep the two in step when
|
|
39826
|
+
* adding a section or property — the same pact `IAgentSettings` follows with
|
|
39827
|
+
* `@memberjunction/ai-core-plus`. Core's `modelConfiguration.test.ts` fails when they differ.
|
|
38842
39828
|
*
|
|
38843
39829
|
* **Boundary rule**: anything the engine filters, sorts, or joins on stays a COLUMN (`PowerRank`,
|
|
38844
39830
|
* `IsActive`, `Priority`, `Status` — SQL cannot cheaply predicate into this bag); anything a driver
|
|
@@ -38915,6 +39901,21 @@ export interface MJAIVendorEntity_LLMConfigurationSettings {
|
|
|
38915
39901
|
*/
|
|
38916
39902
|
PrefixPromptCache?: boolean | null;
|
|
38917
39903
|
}
|
|
39904
|
+
/**
|
|
39905
|
+
* MJ-normalized turn-detection mode, provider-neutral so a shared catalog is safe on every provider:
|
|
39906
|
+
* - `'default'` — let the provider profile decide (today's behavior).
|
|
39907
|
+
* - `'serverVad'` — classic silence-based server VAD.
|
|
39908
|
+
* - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
|
|
39909
|
+
* - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
|
|
39910
|
+
* to; the forward slot for full-duplex reasoning voice models.
|
|
39911
|
+
*/
|
|
39912
|
+
export type MJAIVendorEntity_RealtimeTurnDetectionMode = 'default' | 'serverVad' | 'semanticVad' | 'native';
|
|
39913
|
+
/**
|
|
39914
|
+
* What a turn's input may include (distinct from detection, which decides when a turn ends):
|
|
39915
|
+
* - `'audioActivityOnly'` — audio activity only; video frames are sent deliberately.
|
|
39916
|
+
* - `'audioActivityAndAllVideo'` — audio activity plus every video frame (Gemini 3.8 Live's default).
|
|
39917
|
+
*/
|
|
39918
|
+
export type MJAIVendorEntity_RealtimeTurnCoverage = 'audioActivityOnly' | 'audioActivityAndAllVideo';
|
|
38918
39919
|
/**
|
|
38919
39920
|
* MJ-normalized turn-detection settings for realtime (speech-to-speech) models. Every field is
|
|
38920
39921
|
* optional; absent fields contribute nothing. Provider profiles translate this vocabulary to their
|
|
@@ -38922,39 +39923,139 @@ export interface MJAIVendorEntity_LLMConfigurationSettings {
|
|
|
38922
39923
|
* default — a wrong inherited value degrades safely, it never rejects a session.
|
|
38923
39924
|
*/
|
|
38924
39925
|
export interface MJAIVendorEntity_RealtimeTurnDetectionSettings {
|
|
38925
|
-
/**
|
|
38926
|
-
|
|
38927
|
-
* - `'serverVad'` — classic silence-based server VAD.
|
|
38928
|
-
* - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
|
|
38929
|
-
* - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
|
|
38930
|
-
* to; the forward slot for full-duplex reasoning voice models.
|
|
38931
|
-
*/
|
|
38932
|
-
Mode?: 'default' | 'serverVad' | 'semanticVad' | 'native' | null;
|
|
39926
|
+
/** The normalized mode; absent = `'default'`. */
|
|
39927
|
+
Mode?: MJAIVendorEntity_RealtimeTurnDetectionMode;
|
|
38933
39928
|
/** Semantic-VAD aggressiveness (OpenAI `eagerness`); ignored without a mapping. */
|
|
38934
|
-
Eagerness?: 'low' | 'auto' | 'high'
|
|
39929
|
+
Eagerness?: 'low' | 'auto' | 'high';
|
|
38935
39930
|
/** Server-VAD activation threshold (0–1); ignored without a mapping. */
|
|
38936
|
-
Threshold?: number
|
|
39931
|
+
Threshold?: number;
|
|
38937
39932
|
/** Server-VAD trailing-silence duration in ms; ignored without a mapping. */
|
|
38938
|
-
SilenceDurationMs?: number
|
|
39933
|
+
SilenceDurationMs?: number;
|
|
39934
|
+
/**
|
|
39935
|
+
* What a turn's input may include. Declaring it keeps Gemini 3.8 Live's every-frame default (billed,
|
|
39936
|
+
* and consuming context) a decision rather than an inherited cost. Ignored without a mapping.
|
|
39937
|
+
*/
|
|
39938
|
+
Coverage?: MJAIVendorEntity_RealtimeTurnCoverage;
|
|
39939
|
+
}
|
|
39940
|
+
/** Which plane handles reasoning: `'local'` (the application/agent loop, the default) or `'remote'`. */
|
|
39941
|
+
export type MJAIVendorEntity_RealtimeReasoningPlane = 'local' | 'remote';
|
|
39942
|
+
/** A reasoning effort in MJ's neutral vocabulary; each provider profile maps the values its model accepts. */
|
|
39943
|
+
export type MJAIVendorEntity_RealtimeReasoningEffort = 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
|
|
39944
|
+
/** The remote reasoning target, used when `Plane` is `'remote'`. */
|
|
39945
|
+
export interface MJAIVendorEntity_RealtimeRemoteReasoning {
|
|
39946
|
+
/** What the reference denotes: `'model'` (Live, Inworld) or `'hostedAgent'` (ElevenLabs). */
|
|
39947
|
+
Kind?: 'model' | 'hostedAgent';
|
|
39948
|
+
/** The target, e.g. `'gpt-5.6-terra'`, `'anthropic/claude-sonnet-4-6'`, `'MJ Realtime Co-Agent'`. */
|
|
39949
|
+
Ref?: string;
|
|
39950
|
+
/** The target's reasoning effort, for models that support one. */
|
|
39951
|
+
Effort?: MJAIVendorEntity_RealtimeReasoningEffort;
|
|
39952
|
+
/** The most output tokens for the remote reasoning pass. */
|
|
39953
|
+
MaxOutputTokens?: number;
|
|
39954
|
+
}
|
|
39955
|
+
/** Reasoning-plane settings for realtime models — dual delegation configuration. */
|
|
39956
|
+
export interface MJAIVendorEntity_RealtimeReasoningSettings {
|
|
39957
|
+
/** Absent = `'local'`. Fixed when the session is created. */
|
|
39958
|
+
Plane?: MJAIVendorEntity_RealtimeReasoningPlane;
|
|
39959
|
+
/** The remote target when `Plane` is `'remote'`. */
|
|
39960
|
+
Remote?: MJAIVendorEntity_RealtimeRemoteReasoning;
|
|
39961
|
+
/**
|
|
39962
|
+
* How hard the model itself reasons (Gemini `thinkingConfig.thinkingLevel`). A profile that cannot
|
|
39963
|
+
* honour the value logs a warning and uses its own default.
|
|
39964
|
+
*/
|
|
39965
|
+
Level?: MJAIVendorEntity_RealtimeReasoningEffort;
|
|
39966
|
+
/**
|
|
39967
|
+
* Ask the model for human-readable summaries of its own reasoning (Gemini `includeThoughts`). They
|
|
39968
|
+
* are progress narration, not assistant speech. Absent = off.
|
|
39969
|
+
*/
|
|
39970
|
+
IncludeThoughtSummaries?: boolean;
|
|
39971
|
+
}
|
|
39972
|
+
/** Which way samples flow on a track, relative to the model. */
|
|
39973
|
+
export type MJAIVendorEntity_RealtimeTrackDirection = 'inbound' | 'outbound';
|
|
39974
|
+
/** The modalities MJ itself reasons about (cost, consent, transcripts). */
|
|
39975
|
+
export type MJAIVendorEntity_RealtimeWellKnownModality = 'audio' | 'video' | 'image' | 'text';
|
|
39976
|
+
/** A modality key: one of the well-known values, or any registered string. */
|
|
39977
|
+
export type MJAIVendorEntity_RealtimeModalityKey = MJAIVendorEntity_RealtimeWellKnownModality | (string & {});
|
|
39978
|
+
/** How a track's usage is metered. */
|
|
39979
|
+
export type MJAIVendorEntity_RealtimeTrackUsageBasis = 'tokens' | 'seconds' | 'frames' | 'bytes';
|
|
39980
|
+
/**
|
|
39981
|
+
* One directional stream of one modality, as {@link MJAIVendorEntity_RealtimeConfigurationSettings.RequestedTracks}
|
|
39982
|
+
* requests it. Mirrors the track descriptor in `@memberjunction/ai` (`realtimeTracks.ts`).
|
|
39983
|
+
*/
|
|
39984
|
+
export interface MJAIVendorEntity_RealtimeTrackDescriptor {
|
|
39985
|
+
/** The modality this track carries. */
|
|
39986
|
+
Modality: MJAIVendorEntity_RealtimeModalityKey;
|
|
39987
|
+
/** Which way samples flow, relative to the model. */
|
|
39988
|
+
Direction: MJAIVendorEntity_RealtimeTrackDirection;
|
|
39989
|
+
/** Wire encoding, e.g. `'audio/pcm;rate=16000'` or `'image/jpeg'`; absent = the profile's default. */
|
|
39990
|
+
Encoding?: string;
|
|
39991
|
+
/** Sample or frame cadence: fps for video, Hz for audio. */
|
|
39992
|
+
Rate?: number;
|
|
39993
|
+
/** How this track is metered; absent = the session's own basis. */
|
|
39994
|
+
UsageBasis?: readonly MJAIVendorEntity_RealtimeTrackUsageBasis[];
|
|
39995
|
+
/** Whether establishing this track needs an explicit human grant (camera, screen, microphone). */
|
|
39996
|
+
RequiresConsent?: boolean;
|
|
39997
|
+
/** Whether the session needs this track (`true`) or treats it as best-effort (`false`). */
|
|
39998
|
+
Required?: boolean;
|
|
39999
|
+
/** Which source feeds this track, when several streams of one modality and direction can exist. */
|
|
40000
|
+
SourceID?: string;
|
|
40001
|
+
/** A human-readable name for that source ("Whiteboard", "Camera"). */
|
|
40002
|
+
Label?: string;
|
|
38939
40003
|
}
|
|
38940
40004
|
/**
|
|
38941
|
-
*
|
|
38942
|
-
* `'
|
|
40005
|
+
* Which server signal means "the session has gone idle and deferred work may be flushed":
|
|
40006
|
+
* `'turnComplete'` (the default) or `'interactionStatus'`, for models with asynchronous reasoning
|
|
40007
|
+
* whose `turnComplete` arrives while they still reason and call tools.
|
|
38943
40008
|
*/
|
|
38944
|
-
export
|
|
40009
|
+
export type MJAIVendorEntity_RealtimeIdleSignal = 'turnComplete' | 'interactionStatus';
|
|
40010
|
+
/** Tool-execution semantics a model permits. Capability declarations, not requests. */
|
|
40011
|
+
export interface MJAIVendorEntity_RealtimeToolingSettings {
|
|
38945
40012
|
/**
|
|
38946
|
-
*
|
|
38947
|
-
*
|
|
38948
|
-
* - `'remote'` — delegated to remote model or hosted agent.
|
|
40013
|
+
* Whether synchronous blocking tool execution is legal. Absent = permitted. `false` on models that
|
|
40014
|
+
* reject blocking mode outright (Gemini 3.8 Live Extended Thinking).
|
|
38949
40015
|
*/
|
|
38950
|
-
|
|
38951
|
-
/**
|
|
38952
|
-
|
|
38953
|
-
|
|
38954
|
-
|
|
38955
|
-
|
|
38956
|
-
|
|
38957
|
-
|
|
40016
|
+
SupportsBlockingExecution?: boolean;
|
|
40017
|
+
/**
|
|
40018
|
+
* Whether per-function scheduling hints are legal (Gemini `SILENT` / `WHEN_IDLE` / `INTERRUPTED`).
|
|
40019
|
+
* Absent = not supported.
|
|
40020
|
+
*/
|
|
40021
|
+
SupportsScheduling?: boolean;
|
|
40022
|
+
/** Preferred function-calling behavior. */
|
|
40023
|
+
Behavior?: 'BLOCKING' | 'NON_BLOCKING';
|
|
40024
|
+
}
|
|
40025
|
+
/**
|
|
40026
|
+
* One price for a quantity a realtime session produces, in one currency. It applies only when all
|
|
40027
|
+
* three fields are set; a partial price, or a unit or currency the reader does not handle, counts
|
|
40028
|
+
* as no price.
|
|
40029
|
+
*/
|
|
40030
|
+
export interface MJAIVendorEntity_RealtimeUnitPrice {
|
|
40031
|
+
/** The amount charged per {@link MJAIVendorEntity_RealtimeUnitPrice.Unit}. Never negative. */
|
|
40032
|
+
Price?: number | null;
|
|
40033
|
+
/**
|
|
40034
|
+
* The billing unit, named as in `MJ: AI Model Price Unit Types`. `'Per Minute'`: one minute.
|
|
40035
|
+
* `'Per 1M Tokens'`: one million tokens.
|
|
40036
|
+
*/
|
|
40037
|
+
Unit?: 'Per Minute' | 'Per 1M Tokens' | null;
|
|
40038
|
+
/** ISO 4217 currency code, uppercase (e.g. `USD`), as on `MJ: AI Model Costs`. */
|
|
40039
|
+
Currency?: string | null;
|
|
40040
|
+
}
|
|
40041
|
+
/**
|
|
40042
|
+
* Prices for realtime output that the model's cost rows (`MJ: AI Model Costs`) do not price on
|
|
40043
|
+
* their own; the cost rows stay the authority for token prices. A price belongs to the host that
|
|
40044
|
+
* charges it, so set this on the model-vendor row: a price on the model or the model type would
|
|
40045
|
+
* reach every vendor that serves the model.
|
|
40046
|
+
*/
|
|
40047
|
+
export interface MJAIVendorEntity_RealtimePricingSettings {
|
|
40048
|
+
/**
|
|
40049
|
+
* The price of avatar video output, charged on top of the session's token cost. `'Per Minute'`
|
|
40050
|
+
* prices the seconds of avatar video the model generates; `'Per 1M Tokens'` prices the output
|
|
40051
|
+
* tokens the provider counts as video. Set the price and its unit together: the cascade merges
|
|
40052
|
+
* per key, so a layer that sets only one of them keeps the other from the layer below.
|
|
40053
|
+
*
|
|
40054
|
+
* Unverified until checked against Google's bill (#5312): Gemini 3.8 Live on Vertex AI is
|
|
40055
|
+
* seeded at $0.37152 per minute, derived from Google's $1.00 per 1M avatar video output tokens
|
|
40056
|
+
* at 6,192 tokens per second.
|
|
40057
|
+
*/
|
|
40058
|
+
AvatarVideoOutput?: MJAIVendorEntity_RealtimeUnitPrice | null;
|
|
38958
40059
|
}
|
|
38959
40060
|
/** Realtime (speech-to-speech) knobs. */
|
|
38960
40061
|
export interface MJAIVendorEntity_RealtimeConfigurationSettings {
|
|
@@ -38968,7 +40069,31 @@ export interface MJAIVendorEntity_RealtimeConfigurationSettings {
|
|
|
38968
40069
|
/**
|
|
38969
40070
|
* Reasoning plane settings — dual delegation configuration. Absent defaults to `'local'`.
|
|
38970
40071
|
*/
|
|
38971
|
-
Reasoning?: MJAIVendorEntity_RealtimeReasoningSettings
|
|
40072
|
+
Reasoning?: MJAIVendorEntity_RealtimeReasoningSettings;
|
|
40073
|
+
/**
|
|
40074
|
+
* Whether this realtime model natively supports full-duplex conversational audio
|
|
40075
|
+
* (simultaneous speaking and listening with natural interruptions).
|
|
40076
|
+
*
|
|
40077
|
+
* When true, full-duplex models do not receive turn-taking tools or an energy-VAD floor gate,
|
|
40078
|
+
* allowing the provider's native full-duplex model to handle natural turn transitions.
|
|
40079
|
+
* Cascades AIModelType -> Vendor ModelDefaults -> AIModel -> AIModelVendor.
|
|
40080
|
+
*/
|
|
40081
|
+
FullDuplex?: boolean | null;
|
|
40082
|
+
/** Tool-execution semantics this model permits. Absent = the profile's own defaults. */
|
|
40083
|
+
Tooling?: MJAIVendorEntity_RealtimeToolingSettings;
|
|
40084
|
+
/**
|
|
40085
|
+
* Media tracks a session asks the model to establish beyond audio. Absent or empty establishes
|
|
40086
|
+
* audio only, so a video track exists only because something asked for it and never arrives as an
|
|
40087
|
+
* inherited cost. Requests are intersected with what the model supports.
|
|
40088
|
+
*/
|
|
40089
|
+
RequestedTracks?: readonly MJAIVendorEntity_RealtimeTrackDescriptor[];
|
|
40090
|
+
/** Which server signal means the session has gone idle. Absent = `'turnComplete'`. */
|
|
40091
|
+
IdleSignal?: MJAIVendorEntity_RealtimeIdleSignal;
|
|
40092
|
+
/**
|
|
40093
|
+
* Prices for output the token cost rows do not cover, such as avatar video. Set it on the
|
|
40094
|
+
* model-vendor row.
|
|
40095
|
+
*/
|
|
40096
|
+
Pricing?: MJAIVendorEntity_RealtimePricingSettings | null;
|
|
38972
40097
|
}
|
|
38973
40098
|
/** Vision knobs. Reserved — no consumers yet. */
|
|
38974
40099
|
export interface MJAIVendorEntity_VisionConfigurationSettings {
|
|
@@ -38978,6 +40103,22 @@ export interface MJAIVendorEntity_VisionConfigurationSettings {
|
|
|
38978
40103
|
export interface MJAIVendorEntity_AudioConfigurationSettings {
|
|
38979
40104
|
[key: string]: unknown;
|
|
38980
40105
|
}
|
|
40106
|
+
/**
|
|
40107
|
+
* Privacy posture of the model deployment this configuration describes. Set it on the catalog layers
|
|
40108
|
+
* (`MJ: AI Models`, `MJ: AI Model Vendors`, a vendor's `ModelDefaults`): data retention is a property of
|
|
40109
|
+
* how a model is SERVED, so the vendor row is usually where it is true.
|
|
40110
|
+
*/
|
|
40111
|
+
export interface MJAIVendorEntity_PrivacyConfigurationSettings {
|
|
40112
|
+
/**
|
|
40113
|
+
* Whether this model is served under a zero-data-retention agreement: the provider does not store
|
|
40114
|
+
* prompts, audio, images or outputs beyond serving the request. `true` is a positive claim that
|
|
40115
|
+
* somebody verified; absent, `null` and `false` all mean "not declared", never "retained", because
|
|
40116
|
+
* an undeclared model is not known to be bad. It is read by realtime channel exposure policy:
|
|
40117
|
+
* an agent that requires zero data retention for a channel's `'state'` or `'pixels'` exposure has
|
|
40118
|
+
* that exposure lowered on any model that does not declare `true` here.
|
|
40119
|
+
*/
|
|
40120
|
+
ZeroDataRetention?: boolean | null;
|
|
40121
|
+
}
|
|
38981
40122
|
/**
|
|
38982
40123
|
* Typed-decision knobs, consumed at call time by the decision runner. They declare what a decision
|
|
38983
40124
|
* model accepts, so an oversized request can be refused with a clear message before the call,
|
|
@@ -39012,6 +40153,8 @@ export interface MJAIVendorEntity_IAIModelConfiguration {
|
|
|
39012
40153
|
Audio?: MJAIVendorEntity_AudioConfigurationSettings | null;
|
|
39013
40154
|
/** Typed-decision limits. Honored at the catalog layers. */
|
|
39014
40155
|
Decision?: MJAIVendorEntity_DecisionConfigurationSettings | null;
|
|
40156
|
+
/** Privacy posture of the model deployment. Honored at the catalog layers. */
|
|
40157
|
+
Privacy?: MJAIVendorEntity_PrivacyConfigurationSettings | null;
|
|
39015
40158
|
}
|
|
39016
40159
|
/**
|
|
39017
40160
|
* The `PromptConfiguration` column on `MJ: AI Prompts` — per-prompt call-time knobs, layered ON TOP of the
|
|
@@ -39031,6 +40174,8 @@ export interface MJAIVendorEntity_IAIPromptConfiguration {
|
|
|
39031
40174
|
Audio?: MJAIVendorEntity_AudioConfigurationSettings | null;
|
|
39032
40175
|
/** Typed-decision limits. Reserved at this layer. */
|
|
39033
40176
|
Decision?: MJAIVendorEntity_DecisionConfigurationSettings | null;
|
|
40177
|
+
/** Privacy posture. Reserved at this layer. */
|
|
40178
|
+
Privacy?: MJAIVendorEntity_PrivacyConfigurationSettings | null;
|
|
39034
40179
|
}
|
|
39035
40180
|
/**
|
|
39036
40181
|
* The `PromptConfiguration` column on `MJ: AI Prompt Models` — the most specific layer, overriding both
|
|
@@ -39047,6 +40192,8 @@ export interface MJAIVendorEntity_IAIPromptModelConfiguration {
|
|
|
39047
40192
|
Audio?: MJAIVendorEntity_AudioConfigurationSettings | null;
|
|
39048
40193
|
/** Typed-decision limits. Reserved at this layer. */
|
|
39049
40194
|
Decision?: MJAIVendorEntity_DecisionConfigurationSettings | null;
|
|
40195
|
+
/** Privacy posture. Reserved at this layer. */
|
|
40196
|
+
Privacy?: MJAIVendorEntity_PrivacyConfigurationSettings | null;
|
|
39050
40197
|
}
|
|
39051
40198
|
/**
|
|
39052
40199
|
* `MJ: AI Vendors . Configuration` — the vendor's own configuration bag. General-purpose: a vendor
|
|
@@ -41996,8 +43143,14 @@ export interface MJApplicationEntity_IDefaultNavItem {
|
|
|
41996
43143
|
* realtime persona/disclosure overrides). Every field is optional — an app opts into
|
|
41997
43144
|
* exactly what it needs.
|
|
41998
43145
|
*
|
|
41999
|
-
* Disclosure values ('silent' | 'mention' | 'hand-voice') mirror the
|
|
42000
|
-
* union declared in @memberjunction/ai-
|
|
43146
|
+
* Disclosure values ('silent' | 'mention' | 'hand-voice') mirror the RealtimeDisclosurePolicy
|
|
43147
|
+
* union declared in @memberjunction/ai-agents.
|
|
43148
|
+
*
|
|
43149
|
+
* **Lockstep contract**: this interface is mirrored, field for field, by `MJApplicationEntity_IAgentSettings` in
|
|
43150
|
+
* `packages/AI/CorePlus/src/agent-settings.ts` (`@memberjunction/ai-core-plus`). Runtime code parses
|
|
43151
|
+
* the column with that mirror (`ParseAgentSettings`) rather than the CodeGen-generated
|
|
43152
|
+
* `AgentSettingsObject` accessor, so a field added here is usable at runtime before CodeGen next
|
|
43153
|
+
* regenerates the inline copy. Edit both in the same commit.
|
|
42001
43154
|
*/
|
|
42002
43155
|
export interface MJApplicationEntity_IAgentSettings {
|
|
42003
43156
|
/** The app's default/lead agent (conversational default AND realtime lead identity). Agent ID. */
|
|
@@ -42042,6 +43195,37 @@ export interface MJApplicationEntity_IAgentSettings {
|
|
|
42042
43195
|
} | null;
|
|
42043
43196
|
/** Model preference override (AI Models Name or ID). */
|
|
42044
43197
|
ModelPreference?: string | null;
|
|
43198
|
+
/**
|
|
43199
|
+
* Which interactive realtime channels (Whiteboard, Remote Browser, an Open App's own widget, …)
|
|
43200
|
+
* this app's sessions get. Layers into the same per-channel scoping cascade as the agent's own
|
|
43201
|
+
* `realtime.channels` configuration (see `@memberjunction/ai-core-plus` `ResolveRealtimeChannelScope`):
|
|
43202
|
+
* a layer's `Include` turns a channel on (the only way to get an `opt-in` channel), its `Exclude`
|
|
43203
|
+
* turns one off, and the MOST SPECIFIC layer to mention a channel wins; within one layer `Exclude`
|
|
43204
|
+
* beats `Include`. A channel's registry row `IsActive = false` remains a master kill switch that
|
|
43205
|
+
* nothing here can override. Channel keys match the channel's name, case-insensitively.
|
|
43206
|
+
*/
|
|
43207
|
+
Channels?: {
|
|
43208
|
+
/** Channel keys to turn ON (required for `opt-in` channels; a no-op for `all-sessions` ones). */
|
|
43209
|
+
Include?: string[] | null;
|
|
43210
|
+
/** Channel keys to turn OFF. Beats `Include` within the same layer. */
|
|
43211
|
+
Exclude?: string[] | null;
|
|
43212
|
+
/** Per-channel opaque configuration, keyed by channel key; delivered to the channel at session start. */
|
|
43213
|
+
Config?: {
|
|
43214
|
+
[channelKey: string]: {
|
|
43215
|
+
[key: string]: unknown;
|
|
43216
|
+
};
|
|
43217
|
+
} | null;
|
|
43218
|
+
/** Per-channel display override, keyed by channel key. */
|
|
43219
|
+
DisplayPolicy?: {
|
|
43220
|
+
[channelKey: string]: 'open-on-start' | 'on-demand' | 'headless';
|
|
43221
|
+
} | null;
|
|
43222
|
+
/**
|
|
43223
|
+
* Exposure levels that need a zero-data-retention model. When the session model's configuration
|
|
43224
|
+
* does not declare `Privacy.ZeroDataRetention: true`, exposure is lowered to below the lowest level
|
|
43225
|
+
* listed, and the agent is told why. Applies to every channel in the session.
|
|
43226
|
+
*/
|
|
43227
|
+
RequireZeroDataRetentionFor?: Array<'state' | 'pixels'> | null;
|
|
43228
|
+
} | null;
|
|
42045
43229
|
} | null;
|
|
42046
43230
|
}
|
|
42047
43231
|
/**
|
|
@@ -50792,6 +51976,146 @@ export declare class MJConversationArtifactEntity extends BaseEntity<MJConversat
|
|
|
50792
51976
|
*/
|
|
50793
51977
|
get ArtifactType(): string;
|
|
50794
51978
|
}
|
|
51979
|
+
/**
|
|
51980
|
+
* MJ: Conversation Branches - strongly typed entity sub-class
|
|
51981
|
+
* * Schema: __mj
|
|
51982
|
+
* * Base Table: ConversationBranch
|
|
51983
|
+
* * Base View: vwConversationBranches
|
|
51984
|
+
* * @description A fork of a conversation: another path that starts at a message. Main (the trunk) is the messages with no branch. A fork's path is its own messages plus each ancestor's messages up to that ancestor's ForkFromSequence.
|
|
51985
|
+
* * Primary Key: ID
|
|
51986
|
+
* @extends {BaseEntity}
|
|
51987
|
+
* @class
|
|
51988
|
+
* @public
|
|
51989
|
+
*/
|
|
51990
|
+
export declare class MJConversationBranchEntity extends BaseEntity<MJConversationBranchEntityType> {
|
|
51991
|
+
/**
|
|
51992
|
+
* Loads the MJ: Conversation Branches record from the database
|
|
51993
|
+
* @param ID: string - primary key value to load the MJ: Conversation Branches record.
|
|
51994
|
+
* @param EntityRelationshipsToLoad - (optional) the relationships to load
|
|
51995
|
+
* @returns {Promise<boolean>} - true if successful, false otherwise
|
|
51996
|
+
* @public
|
|
51997
|
+
* @async
|
|
51998
|
+
* @memberof MJConversationBranchEntity
|
|
51999
|
+
* @method
|
|
52000
|
+
* @override
|
|
52001
|
+
*/
|
|
52002
|
+
Load(ID: string, EntityRelationshipsToLoad?: string[]): Promise<boolean>;
|
|
52003
|
+
/**
|
|
52004
|
+
* MJ: Conversation Branches - Delete method override to wrap in transaction since CascadeDeletes is true.
|
|
52005
|
+
* Wrapping in a transaction ensures that all cascade delete operations are handled atomically.
|
|
52006
|
+
* @public
|
|
52007
|
+
* @method
|
|
52008
|
+
* @override
|
|
52009
|
+
* @memberof MJConversationBranchEntity
|
|
52010
|
+
* @returns {Promise<boolean>} - true if successful, false otherwise
|
|
52011
|
+
*/
|
|
52012
|
+
Delete(options?: EntityDeleteOptions): Promise<boolean>;
|
|
52013
|
+
/**
|
|
52014
|
+
* * Field Name: ID
|
|
52015
|
+
* * Display Name: ID
|
|
52016
|
+
* * SQL Data Type: uniqueidentifier
|
|
52017
|
+
* * Default Value: newsequentialid()
|
|
52018
|
+
*/
|
|
52019
|
+
get ID(): string;
|
|
52020
|
+
set ID(value: string);
|
|
52021
|
+
/**
|
|
52022
|
+
* * Field Name: ConversationID
|
|
52023
|
+
* * Display Name: Conversation
|
|
52024
|
+
* * SQL Data Type: uniqueidentifier
|
|
52025
|
+
* * Related Entity/Foreign Key: MJ: Conversations (vwConversations.ID)
|
|
52026
|
+
* * Description: The conversation this fork belongs to.
|
|
52027
|
+
*/
|
|
52028
|
+
get ConversationID(): string;
|
|
52029
|
+
set ConversationID(value: string);
|
|
52030
|
+
/**
|
|
52031
|
+
* * Field Name: ParentBranchID
|
|
52032
|
+
* * Display Name: Parent Branch
|
|
52033
|
+
* * SQL Data Type: uniqueidentifier
|
|
52034
|
+
* * Related Entity/Foreign Key: MJ: Conversation Branches (vwConversationBranches.ID)
|
|
52035
|
+
* * Description: The fork this one started from. NULL means it started from Main, or before the first message when ForkFromSequence is also NULL.
|
|
52036
|
+
*/
|
|
52037
|
+
get ParentBranchID(): string | null;
|
|
52038
|
+
set ParentBranchID(value: string | null);
|
|
52039
|
+
/**
|
|
52040
|
+
* * Field Name: ForkFromSequence
|
|
52041
|
+
* * Display Name: Fork From Sequence
|
|
52042
|
+
* * SQL Data Type: int
|
|
52043
|
+
* * Description: Sequence of the last message shared with the parent path. NULL means the fork starts before the first message, in which case ParentBranchID is also NULL.
|
|
52044
|
+
*/
|
|
52045
|
+
get ForkFromSequence(): number | null;
|
|
52046
|
+
set ForkFromSequence(value: number | null);
|
|
52047
|
+
/**
|
|
52048
|
+
* * Field Name: Name
|
|
52049
|
+
* * Display Name: Name
|
|
52050
|
+
* * SQL Data Type: nvarchar(255)
|
|
52051
|
+
* * Description: Optional name of the fork. With no name, the UI shows a default label from Kind: a Fork is named from its first message.
|
|
52052
|
+
*/
|
|
52053
|
+
get Name(): string | null;
|
|
52054
|
+
set Name(value: string | null);
|
|
52055
|
+
/**
|
|
52056
|
+
* * Field Name: Kind
|
|
52057
|
+
* * Display Name: Kind
|
|
52058
|
+
* * SQL Data Type: nvarchar(20)
|
|
52059
|
+
* * Default Value: Fork
|
|
52060
|
+
* * Value List Type: List
|
|
52061
|
+
* * Possible Values
|
|
52062
|
+
* * Edit
|
|
52063
|
+
* * Fork
|
|
52064
|
+
* * Regenerate
|
|
52065
|
+
* * Description: How the fork started: Fork (Fork from here), Edit (a sent message was edited) or Regenerate (an answer was regenerated).
|
|
52066
|
+
*/
|
|
52067
|
+
get Kind(): 'Edit' | 'Fork' | 'Regenerate';
|
|
52068
|
+
set Kind(value: 'Edit' | 'Fork' | 'Regenerate');
|
|
52069
|
+
/**
|
|
52070
|
+
* * Field Name: SourceDetailID
|
|
52071
|
+
* * Display Name: Source Detail
|
|
52072
|
+
* * SQL Data Type: uniqueidentifier
|
|
52073
|
+
* * Description: The edited message (Kind Edit) or the replaced answer (Kind Regenerate); NULL otherwise. Not a foreign key, to avoid a CodeGen cascade cycle with ConversationDetail.
|
|
52074
|
+
*/
|
|
52075
|
+
get SourceDetailID(): string | null;
|
|
52076
|
+
set SourceDetailID(value: string | null);
|
|
52077
|
+
/**
|
|
52078
|
+
* * Field Name: UserID
|
|
52079
|
+
* * Display Name: User
|
|
52080
|
+
* * SQL Data Type: uniqueidentifier
|
|
52081
|
+
* * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)
|
|
52082
|
+
* * Description: The person who started the fork.
|
|
52083
|
+
*/
|
|
52084
|
+
get UserID(): string;
|
|
52085
|
+
set UserID(value: string);
|
|
52086
|
+
/**
|
|
52087
|
+
* * Field Name: __mj_CreatedAt
|
|
52088
|
+
* * Display Name: Created At
|
|
52089
|
+
* * SQL Data Type: datetimeoffset
|
|
52090
|
+
* * Default Value: getutcdate()
|
|
52091
|
+
*/
|
|
52092
|
+
get __mj_CreatedAt(): Date;
|
|
52093
|
+
/**
|
|
52094
|
+
* * Field Name: __mj_UpdatedAt
|
|
52095
|
+
* * Display Name: Updated At
|
|
52096
|
+
* * SQL Data Type: datetimeoffset
|
|
52097
|
+
* * Default Value: getutcdate()
|
|
52098
|
+
*/
|
|
52099
|
+
get __mj_UpdatedAt(): Date;
|
|
52100
|
+
/**
|
|
52101
|
+
* * Field Name: Conversation
|
|
52102
|
+
* * Display Name: Conversation Detail
|
|
52103
|
+
* * SQL Data Type: nvarchar(255)
|
|
52104
|
+
*/
|
|
52105
|
+
get Conversation(): string | null;
|
|
52106
|
+
/**
|
|
52107
|
+
* * Field Name: ParentBranch
|
|
52108
|
+
* * Display Name: Parent Branch Detail
|
|
52109
|
+
* * SQL Data Type: nvarchar(255)
|
|
52110
|
+
*/
|
|
52111
|
+
get ParentBranch(): string | null;
|
|
52112
|
+
/**
|
|
52113
|
+
* * Field Name: User
|
|
52114
|
+
* * Display Name: User Name
|
|
52115
|
+
* * SQL Data Type: nvarchar(100)
|
|
52116
|
+
*/
|
|
52117
|
+
get User(): string;
|
|
52118
|
+
}
|
|
50795
52119
|
/**
|
|
50796
52120
|
* MJ: Conversation Compaction Runs - strongly typed entity sub-class
|
|
50797
52121
|
* * Schema: __mj
|
|
@@ -51612,6 +52936,23 @@ export declare class MJConversationDetailEntity extends BaseEntity<MJConversatio
|
|
|
51612
52936
|
*/
|
|
51613
52937
|
get Sequence(): number;
|
|
51614
52938
|
/**
|
|
52939
|
+
* * Field Name: BranchID
|
|
52940
|
+
* * Display Name: Branch
|
|
52941
|
+
* * SQL Data Type: uniqueidentifier
|
|
52942
|
+
* * Related Entity/Foreign Key: MJ: Conversation Branches (vwConversationBranches.ID)
|
|
52943
|
+
* * Description: The fork this message belongs to. NULL means Main (the trunk). Every writer sets it explicitly.
|
|
52944
|
+
*/
|
|
52945
|
+
get BranchID(): string | null;
|
|
52946
|
+
set BranchID(value: string | null);
|
|
52947
|
+
/**
|
|
52948
|
+
* * Field Name: ReplacedAt
|
|
52949
|
+
* * Display Name: Replaced At
|
|
52950
|
+
* * SQL Data Type: datetimeoffset
|
|
52951
|
+
* * Description: When a rerun of this message's turn replaced it (Regenerate or Save and resend while forking is off). A replaced row is kept for audit, is hidden from the user and is never sent to an agent. NULL means the row is live.
|
|
52952
|
+
*/
|
|
52953
|
+
get ReplacedAt(): Date | null;
|
|
52954
|
+
set ReplacedAt(value: Date | null);
|
|
52955
|
+
/**
|
|
51615
52956
|
* * Field Name: Conversation
|
|
51616
52957
|
* * Display Name: Conversation
|
|
51617
52958
|
* * SQL Data Type: nvarchar(255)
|
|
@@ -51654,6 +52995,12 @@ export declare class MJConversationDetailEntity extends BaseEntity<MJConversatio
|
|
|
51654
52995
|
*/
|
|
51655
52996
|
get TestRun(): string | null;
|
|
51656
52997
|
/**
|
|
52998
|
+
* * Field Name: Branch
|
|
52999
|
+
* * Display Name: Branch
|
|
53000
|
+
* * SQL Data Type: nvarchar(255)
|
|
53001
|
+
*/
|
|
53002
|
+
get Branch(): string | null;
|
|
53003
|
+
/**
|
|
51657
53004
|
* * Field Name: RootParentID
|
|
51658
53005
|
* * Display Name: Root Parent
|
|
51659
53006
|
* * SQL Data Type: uniqueidentifier
|
|
@@ -55791,6 +57138,13 @@ export interface MJEntityEntity_IEntityCloneConfiguration {
|
|
|
55791
57138
|
Enabled?: boolean;
|
|
55792
57139
|
/** Hard refusal: this entity's rows are never created by the clone engine, as root or as child. Overrides every relationship policy. Use for audit, run, credential and metadata entities. */
|
|
55793
57140
|
NotCloneable?: boolean;
|
|
57141
|
+
/**
|
|
57142
|
+
* Lets a NotCloneable entity's rows be copied after all, but only as children of a template copy: a
|
|
57143
|
+
* clone run under a preset with `TemplateSourceField` whose source record has that flag set. Use for
|
|
57144
|
+
* rows that are private to a person (conversations, dashboard preferences) and must never be copied
|
|
57145
|
+
* from one user to another, yet belong in a template built to be copied.
|
|
57146
|
+
*/
|
|
57147
|
+
CloneableFromTemplate?: boolean;
|
|
55794
57148
|
/** Shown to users and returned in warnings when NotCloneable or Enabled=false. */
|
|
55795
57149
|
NotCloneableReason?: string;
|
|
55796
57150
|
/** Authorization name checked with ancestors. Default 'Clone Records'; resolved per §9.1. */
|
|
@@ -55952,6 +57306,14 @@ export interface MJEntityEntity_IClonePreset {
|
|
|
55952
57306
|
Relationships?: Record<string, {
|
|
55953
57307
|
Policy: 'Deep' | 'Reference' | 'Skip';
|
|
55954
57308
|
}>;
|
|
57309
|
+
/**
|
|
57310
|
+
* Makes this a template preset. Names a boolean field on the root entity; the preset is offered and
|
|
57311
|
+
* applied only when the source record has it set (e.g. `IsTemplate` on `MJ: Users`), and the plan is
|
|
57312
|
+
* blocked otherwise. A template preset may open edges the configuration Locks and copy children whose
|
|
57313
|
+
* entity is `CloneableFromTemplate`: those protections keep a person's private records from being
|
|
57314
|
+
* copied to someone else, which does not apply to a record built to be copied.
|
|
57315
|
+
*/
|
|
57316
|
+
TemplateSourceField?: string;
|
|
55955
57317
|
}
|
|
55956
57318
|
/**
|
|
55957
57319
|
* Declarative configuration for prospective IsA subtype resolution on an entity.
|
|
@@ -81197,6 +82559,175 @@ export declare class MJSchemaInfoEntity extends BaseEntity<MJSchemaInfoEntityTyp
|
|
|
81197
82559
|
get CanonicalSchemaName(): string | null;
|
|
81198
82560
|
set CanonicalSchemaName(value: string | null);
|
|
81199
82561
|
}
|
|
82562
|
+
/**
|
|
82563
|
+
* MJ: Scoped Notification Configs - strongly typed entity sub-class
|
|
82564
|
+
* * Schema: __mj
|
|
82565
|
+
* * Base Table: ScopedNotificationConfig
|
|
82566
|
+
* * Base View: vwScopedNotificationConfigs
|
|
82567
|
+
* * @description A notification config at one scope: the level between a notification type's defaults and a recipient's preference where an application, a role, a user or the notice's origin can allow or deny a channel. Scoped by the same primary record + secondary dimensions as Scoped Prompt Configs. Resolution: most specific in-scope row wins per channel; at equal specificity Deny beats Allow; a locked Deny caps every level below it, the recipient's preference included.
|
|
82568
|
+
* * Primary Key: ID
|
|
82569
|
+
* @extends {BaseEntity}
|
|
82570
|
+
* @class
|
|
82571
|
+
* @public
|
|
82572
|
+
*/
|
|
82573
|
+
export declare class MJScopedNotificationConfigEntity extends BaseEntity<MJScopedNotificationConfigEntityType> {
|
|
82574
|
+
/**
|
|
82575
|
+
* Loads the MJ: Scoped Notification Configs record from the database
|
|
82576
|
+
* @param ID: string - primary key value to load the MJ: Scoped Notification Configs record.
|
|
82577
|
+
* @param EntityRelationshipsToLoad - (optional) the relationships to load
|
|
82578
|
+
* @returns {Promise<boolean>} - true if successful, false otherwise
|
|
82579
|
+
* @public
|
|
82580
|
+
* @async
|
|
82581
|
+
* @memberof MJScopedNotificationConfigEntity
|
|
82582
|
+
* @method
|
|
82583
|
+
* @override
|
|
82584
|
+
*/
|
|
82585
|
+
Load(ID: string, EntityRelationshipsToLoad?: string[]): Promise<boolean>;
|
|
82586
|
+
/**
|
|
82587
|
+
* * Field Name: ID
|
|
82588
|
+
* * Display Name: ID
|
|
82589
|
+
* * SQL Data Type: uniqueidentifier
|
|
82590
|
+
* * Default Value: newsequentialid()
|
|
82591
|
+
*/
|
|
82592
|
+
get ID(): string;
|
|
82593
|
+
set ID(value: string);
|
|
82594
|
+
/**
|
|
82595
|
+
* * Field Name: NotificationTypeID
|
|
82596
|
+
* * Display Name: Notification Type
|
|
82597
|
+
* * SQL Data Type: uniqueidentifier
|
|
82598
|
+
* * Related Entity/Foreign Key: MJ: User Notification Types (vwUserNotificationTypes.ID)
|
|
82599
|
+
* * Description: The notification type this config is for.
|
|
82600
|
+
*/
|
|
82601
|
+
get NotificationTypeID(): string;
|
|
82602
|
+
set NotificationTypeID(value: string);
|
|
82603
|
+
/**
|
|
82604
|
+
* * Field Name: Description
|
|
82605
|
+
* * Display Name: Description
|
|
82606
|
+
* * SQL Data Type: nvarchar(MAX)
|
|
82607
|
+
* * Description: Why the row exists, for the administrator who finds it.
|
|
82608
|
+
*/
|
|
82609
|
+
get Description(): string | null;
|
|
82610
|
+
set Description(value: string | null);
|
|
82611
|
+
/**
|
|
82612
|
+
* * Field Name: PrimaryScopeEntityID
|
|
82613
|
+
* * Display Name: Primary Scope Entity ID
|
|
82614
|
+
* * SQL Data Type: uniqueidentifier
|
|
82615
|
+
* * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)
|
|
82616
|
+
* * Description: The entity of the primary scope record (Applications, Roles, Users, Companies, ...). NULL with PrimaryScopeRecordID NULL = a global row.
|
|
82617
|
+
*/
|
|
82618
|
+
get PrimaryScopeEntityID(): string | null;
|
|
82619
|
+
set PrimaryScopeEntityID(value: string | null);
|
|
82620
|
+
/**
|
|
82621
|
+
* * Field Name: PrimaryScopeRecordID
|
|
82622
|
+
* * Display Name: Primary Scope Record ID
|
|
82623
|
+
* * SQL Data Type: nvarchar(100)
|
|
82624
|
+
* * Description: The record ID within the primary scope entity this config is scoped to. NULL = global. In scope when it is the caller's primary scope record, the recipient, or a role the recipient holds.
|
|
82625
|
+
*/
|
|
82626
|
+
get PrimaryScopeRecordID(): string | null;
|
|
82627
|
+
set PrimaryScopeRecordID(value: string | null);
|
|
82628
|
+
/**
|
|
82629
|
+
* * Field Name: SecondaryScopes
|
|
82630
|
+
* * Display Name: Secondary Scopes
|
|
82631
|
+
* * SQL Data Type: nvarchar(MAX)
|
|
82632
|
+
* * Description: JSON object of additional scope dimensions, e.g. {"origin":"System"}. Every dimension named must match the notice's scope for the row to apply. origin is Person, System (the Owner-type user) or Automation.
|
|
82633
|
+
*/
|
|
82634
|
+
get SecondaryScopes(): string | null;
|
|
82635
|
+
set SecondaryScopes(value: string | null);
|
|
82636
|
+
/**
|
|
82637
|
+
* * Field Name: InApp
|
|
82638
|
+
* * Display Name: In-App Channel
|
|
82639
|
+
* * SQL Data Type: nvarchar(20)
|
|
82640
|
+
* * Value List Type: List
|
|
82641
|
+
* * Possible Values
|
|
82642
|
+
* * Allow
|
|
82643
|
+
* * Deny
|
|
82644
|
+
* * Description: The in-app channel: Allow, Deny, or NULL to leave it to the next row.
|
|
82645
|
+
*/
|
|
82646
|
+
get InApp(): 'Allow' | 'Deny' | null;
|
|
82647
|
+
set InApp(value: 'Allow' | 'Deny' | null);
|
|
82648
|
+
/**
|
|
82649
|
+
* * Field Name: Email
|
|
82650
|
+
* * Display Name: Email Channel
|
|
82651
|
+
* * SQL Data Type: nvarchar(20)
|
|
82652
|
+
* * Value List Type: List
|
|
82653
|
+
* * Possible Values
|
|
82654
|
+
* * Allow
|
|
82655
|
+
* * Deny
|
|
82656
|
+
* * Description: The email channel: Allow, Deny, or NULL to leave it to the next row.
|
|
82657
|
+
*/
|
|
82658
|
+
get Email(): 'Allow' | 'Deny' | null;
|
|
82659
|
+
set Email(value: 'Allow' | 'Deny' | null);
|
|
82660
|
+
/**
|
|
82661
|
+
* * Field Name: SMS
|
|
82662
|
+
* * Display Name: SMS Channel
|
|
82663
|
+
* * SQL Data Type: nvarchar(20)
|
|
82664
|
+
* * Value List Type: List
|
|
82665
|
+
* * Possible Values
|
|
82666
|
+
* * Allow
|
|
82667
|
+
* * Deny
|
|
82668
|
+
* * Description: The SMS channel: Allow, Deny, or NULL to leave it to the next row.
|
|
82669
|
+
*/
|
|
82670
|
+
get SMS(): 'Allow' | 'Deny' | null;
|
|
82671
|
+
set SMS(value: 'Allow' | 'Deny' | null);
|
|
82672
|
+
/**
|
|
82673
|
+
* * Field Name: IsLocked
|
|
82674
|
+
* * Display Name: Is Locked
|
|
82675
|
+
* * SQL Data Type: bit
|
|
82676
|
+
* * Default Value: 0
|
|
82677
|
+
* * Description: When set, a Deny on this row is absorbing: no less specific row and no recipient preference may turn the channel on. The way a notification type's AllowUserPreference caps the recipient today.
|
|
82678
|
+
*/
|
|
82679
|
+
get IsLocked(): boolean;
|
|
82680
|
+
set IsLocked(value: boolean);
|
|
82681
|
+
/**
|
|
82682
|
+
* * Field Name: Priority
|
|
82683
|
+
* * Display Name: Priority
|
|
82684
|
+
* * SQL Data Type: int
|
|
82685
|
+
* * Default Value: 0
|
|
82686
|
+
* * Description: Tie-break for resolution. Higher wins when two rows tie on scope specificity and neither denies. Default 0.
|
|
82687
|
+
*/
|
|
82688
|
+
get Priority(): number;
|
|
82689
|
+
set Priority(value: number);
|
|
82690
|
+
/**
|
|
82691
|
+
* * Field Name: Status
|
|
82692
|
+
* * Display Name: Status
|
|
82693
|
+
* * SQL Data Type: nvarchar(20)
|
|
82694
|
+
* * Default Value: Active
|
|
82695
|
+
* * Value List Type: List
|
|
82696
|
+
* * Possible Values
|
|
82697
|
+
* * Active
|
|
82698
|
+
* * Archived
|
|
82699
|
+
* * Provisional
|
|
82700
|
+
* * Description: Lifecycle: Active (live), Provisional (staged; eligible), Archived (excluded from resolution).
|
|
82701
|
+
*/
|
|
82702
|
+
get Status(): 'Active' | 'Archived' | 'Provisional';
|
|
82703
|
+
set Status(value: 'Active' | 'Archived' | 'Provisional');
|
|
82704
|
+
/**
|
|
82705
|
+
* * Field Name: __mj_CreatedAt
|
|
82706
|
+
* * Display Name: Created At
|
|
82707
|
+
* * SQL Data Type: datetimeoffset
|
|
82708
|
+
* * Default Value: getutcdate()
|
|
82709
|
+
*/
|
|
82710
|
+
get __mj_CreatedAt(): Date;
|
|
82711
|
+
/**
|
|
82712
|
+
* * Field Name: __mj_UpdatedAt
|
|
82713
|
+
* * Display Name: Updated At
|
|
82714
|
+
* * SQL Data Type: datetimeoffset
|
|
82715
|
+
* * Default Value: getutcdate()
|
|
82716
|
+
*/
|
|
82717
|
+
get __mj_UpdatedAt(): Date;
|
|
82718
|
+
/**
|
|
82719
|
+
* * Field Name: NotificationType
|
|
82720
|
+
* * Display Name: Notification Type Name
|
|
82721
|
+
* * SQL Data Type: nvarchar(100)
|
|
82722
|
+
*/
|
|
82723
|
+
get NotificationType(): string;
|
|
82724
|
+
/**
|
|
82725
|
+
* * Field Name: PrimaryScopeEntity
|
|
82726
|
+
* * Display Name: Primary Scope Entity
|
|
82727
|
+
* * SQL Data Type: nvarchar(255)
|
|
82728
|
+
*/
|
|
82729
|
+
get PrimaryScopeEntity(): string | null;
|
|
82730
|
+
}
|
|
81200
82731
|
/**
|
|
81201
82732
|
* MJ: Scoped Prompt Configs - strongly typed entity sub-class
|
|
81202
82733
|
* * Schema: __mj
|
|
@@ -91045,6 +92576,15 @@ export declare class MJUserEntity extends BaseEntity<MJUserEntityType> {
|
|
|
91045
92576
|
get UserImageIconClass(): string | null;
|
|
91046
92577
|
set UserImageIconClass(value: string | null);
|
|
91047
92578
|
/**
|
|
92579
|
+
* * Field Name: IsTemplate
|
|
92580
|
+
* * Display Name: Is Template
|
|
92581
|
+
* * SQL Data Type: bit
|
|
92582
|
+
* * Default Value: 0
|
|
92583
|
+
* * Description: When true, this user is a template: its configuration (pinned apps, views, settings, dashboards, conversations) is copied to new users through the template clone preset or userHandling.newUserTemplate. Template users are for setting things up, not for everyday use; Explorer shows a banner while one is signed in.
|
|
92584
|
+
*/
|
|
92585
|
+
get IsTemplate(): boolean;
|
|
92586
|
+
set IsTemplate(value: boolean);
|
|
92587
|
+
/**
|
|
91048
92588
|
* * Field Name: FirstLast
|
|
91049
92589
|
* * Display Name: First Last
|
|
91050
92590
|
* * SQL Data Type: nvarchar(101)
|