@memberjunction/core-entities 6.1.0-edge.6 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -52,6 +52,7 @@ export declare const MJAIAgentActionSchema: z.ZodObject<{
52
52
  CompactMode: z.ZodNullable<z.ZodUnion<[z.ZodLiteral<"AI Summary">, z.ZodLiteral<"First N Chars">]>>;
53
53
  CompactLength: z.ZodNullable<z.ZodNumber>;
54
54
  CompactPromptID: z.ZodNullable<z.ZodString>;
55
+ DeclareAsNativeTool: z.ZodBoolean;
55
56
  Agent: z.ZodNullable<z.ZodString>;
56
57
  Action: z.ZodNullable<z.ZodString>;
57
58
  CompactPrompt: z.ZodNullable<z.ZodString>;
@@ -69,6 +70,7 @@ export declare const MJAIAgentActionSchema: z.ZodObject<{
69
70
  CompactMode?: "AI Summary" | "First N Chars";
70
71
  CompactLength?: number;
71
72
  CompactPromptID?: string;
73
+ DeclareAsNativeTool?: boolean;
72
74
  Agent?: string;
73
75
  Action?: string;
74
76
  CompactPrompt?: string;
@@ -86,6 +88,7 @@ export declare const MJAIAgentActionSchema: z.ZodObject<{
86
88
  CompactMode?: "AI Summary" | "First N Chars";
87
89
  CompactLength?: number;
88
90
  CompactPromptID?: string;
91
+ DeclareAsNativeTool?: boolean;
89
92
  Agent?: string;
90
93
  Action?: string;
91
94
  CompactPrompt?: string;
@@ -942,6 +945,47 @@ export declare const MJAIAgentPermissionSchema: z.ZodObject<{
942
945
  Role?: string;
943
946
  }>;
944
947
  export type MJAIAgentPermissionEntityType = z.infer<typeof MJAIAgentPermissionSchema>;
948
+ /**
949
+ * zod schema definition for the entity MJ: AI Agent Personas
950
+ */
951
+ export declare const MJAIAgentPersonaSchema: z.ZodObject<{
952
+ ID: z.ZodString;
953
+ AgentID: z.ZodString;
954
+ PersonaID: z.ZodString;
955
+ IsDefault: z.ZodBoolean;
956
+ Sequence: z.ZodNumber;
957
+ IsAllowed: z.ZodBoolean;
958
+ StyleOverride: z.ZodNullable<z.ZodAny>;
959
+ __mj_CreatedAt: z.ZodDate;
960
+ __mj_UpdatedAt: z.ZodDate;
961
+ Agent: z.ZodNullable<z.ZodString>;
962
+ Persona: z.ZodString;
963
+ }, "strip", z.ZodTypeAny, {
964
+ ID?: string;
965
+ __mj_CreatedAt?: Date;
966
+ __mj_UpdatedAt?: Date;
967
+ AgentID?: string;
968
+ Agent?: string;
969
+ Sequence?: number;
970
+ IsDefault?: boolean;
971
+ IsAllowed?: boolean;
972
+ PersonaID?: string;
973
+ StyleOverride?: any;
974
+ Persona?: string;
975
+ }, {
976
+ ID?: string;
977
+ __mj_CreatedAt?: Date;
978
+ __mj_UpdatedAt?: Date;
979
+ AgentID?: string;
980
+ Agent?: string;
981
+ Sequence?: number;
982
+ IsDefault?: boolean;
983
+ IsAllowed?: boolean;
984
+ PersonaID?: string;
985
+ StyleOverride?: any;
986
+ Persona?: string;
987
+ }>;
988
+ export type MJAIAgentPersonaEntityType = z.infer<typeof MJAIAgentPersonaSchema>;
945
989
  /**
946
990
  * zod schema definition for the entity MJ: AI Agent Prompts
947
991
  */
@@ -1279,6 +1323,10 @@ export declare const MJAIAgentRunStepSchema: z.ZodObject<{
1279
1323
  ParentID: z.ZodNullable<z.ZodString>;
1280
1324
  Comments: z.ZodNullable<z.ZodString>;
1281
1325
  Skills: z.ZodNullable<z.ZodAny>;
1326
+ ToolCallingMode: z.ZodNullable<z.ZodUnion<[z.ZodLiteral<"Envelope">, z.ZodLiteral<"Native">, z.ZodLiteral<"NativeFallback">, z.ZodLiteral<"NativeImplicit">]>>;
1327
+ NativeToolCallCount: z.ZodNullable<z.ZodNumber>;
1328
+ NativeDualChannel: z.ZodNullable<z.ZodBoolean>;
1329
+ NativeToolResultsSent: z.ZodNullable<z.ZodBoolean>;
1282
1330
  AgentRun: z.ZodNullable<z.ZodString>;
1283
1331
  Parent: z.ZodNullable<z.ZodString>;
1284
1332
  RootParentID: z.ZodNullable<z.ZodString>;
@@ -1317,6 +1365,10 @@ export declare const MJAIAgentRunStepSchema: z.ZodObject<{
1317
1365
  FinalPayloadValidationResult?: "Fail" | "Pass" | "Retry" | "Warn";
1318
1366
  FinalPayloadValidationMessages?: string;
1319
1367
  Skills?: any;
1368
+ ToolCallingMode?: "Envelope" | "Native" | "NativeFallback" | "NativeImplicit";
1369
+ NativeToolCallCount?: number;
1370
+ NativeDualChannel?: boolean;
1371
+ NativeToolResultsSent?: boolean;
1320
1372
  }, {
1321
1373
  ID?: string;
1322
1374
  __mj_CreatedAt?: Date;
@@ -1348,6 +1400,10 @@ export declare const MJAIAgentRunStepSchema: z.ZodObject<{
1348
1400
  FinalPayloadValidationResult?: "Fail" | "Pass" | "Retry" | "Warn";
1349
1401
  FinalPayloadValidationMessages?: string;
1350
1402
  Skills?: any;
1403
+ ToolCallingMode?: "Envelope" | "Native" | "NativeFallback" | "NativeImplicit";
1404
+ NativeToolCallCount?: number;
1405
+ NativeDualChannel?: boolean;
1406
+ NativeToolResultsSent?: boolean;
1351
1407
  }>;
1352
1408
  export type MJAIAgentRunStepEntityType = z.infer<typeof MJAIAgentRunStepSchema>;
1353
1409
  /**
@@ -2198,6 +2254,7 @@ export declare const MJAIAgentSchema: z.ZodObject<{
2198
2254
  CompactionTriggerPercent: z.ZodNullable<z.ZodNumber>;
2199
2255
  CompactionTargetPercent: z.ZodNullable<z.ZodNumber>;
2200
2256
  ConversationSummaryPromptID: z.ZodNullable<z.ZodString>;
2257
+ DeclareActionsAsNativeTools: z.ZodBoolean;
2201
2258
  Parent: z.ZodNullable<z.ZodString>;
2202
2259
  ContextCompressionPrompt: z.ZodNullable<z.ZodString>;
2203
2260
  Type: z.ZodNullable<z.ZodString>;
@@ -2306,6 +2363,7 @@ export declare const MJAIAgentSchema: z.ZodObject<{
2306
2363
  AcceptsSkills?: "None" | "All" | "Limited";
2307
2364
  SkillActivationMode?: "Auto" | "RequestedOnly";
2308
2365
  RequirePlanMode?: boolean;
2366
+ DeclareActionsAsNativeTools?: boolean;
2309
2367
  DefaultArtifactType?: string;
2310
2368
  OwnerUser?: string;
2311
2369
  AttachmentStorageProvider?: string;
@@ -2404,6 +2462,7 @@ export declare const MJAIAgentSchema: z.ZodObject<{
2404
2462
  AcceptsSkills?: "None" | "All" | "Limited";
2405
2463
  SkillActivationMode?: "Auto" | "RequestedOnly";
2406
2464
  RequirePlanMode?: boolean;
2465
+ DeclareActionsAsNativeTools?: boolean;
2407
2466
  DefaultArtifactType?: string;
2408
2467
  OwnerUser?: string;
2409
2468
  AttachmentStorageProvider?: string;
@@ -3021,6 +3080,41 @@ export declare const MJAIModelModalitySchema: z.ZodObject<{
3021
3080
  MaxDimension?: number;
3022
3081
  }>;
3023
3082
  export type MJAIModelModalityEntityType = z.infer<typeof MJAIModelModalitySchema>;
3083
+ /**
3084
+ * zod schema definition for the entity MJ: AI Model Personas
3085
+ */
3086
+ export declare const MJAIModelPersonaSchema: z.ZodObject<{
3087
+ ID: z.ZodString;
3088
+ ModelID: z.ZodString;
3089
+ PersonaID: z.ZodString;
3090
+ Sequence: z.ZodNumber;
3091
+ IsSupported: z.ZodBoolean;
3092
+ __mj_CreatedAt: z.ZodDate;
3093
+ __mj_UpdatedAt: z.ZodDate;
3094
+ Model: z.ZodString;
3095
+ Persona: z.ZodString;
3096
+ }, "strip", z.ZodTypeAny, {
3097
+ ID?: string;
3098
+ __mj_CreatedAt?: Date;
3099
+ __mj_UpdatedAt?: Date;
3100
+ Sequence?: number;
3101
+ ModelID?: string;
3102
+ Model?: string;
3103
+ PersonaID?: string;
3104
+ Persona?: string;
3105
+ IsSupported?: boolean;
3106
+ }, {
3107
+ ID?: string;
3108
+ __mj_CreatedAt?: Date;
3109
+ __mj_UpdatedAt?: Date;
3110
+ Sequence?: number;
3111
+ ModelID?: string;
3112
+ Model?: string;
3113
+ PersonaID?: string;
3114
+ Persona?: string;
3115
+ IsSupported?: boolean;
3116
+ }>;
3117
+ export type MJAIModelPersonaEntityType = z.infer<typeof MJAIModelPersonaSchema>;
3024
3118
  /**
3025
3119
  * zod schema definition for the entity MJ: AI Model Price Types
3026
3120
  */
@@ -3277,6 +3371,112 @@ export declare const MJAIModelSchema: z.ZodObject<{
3277
3371
  InputTokenLimit?: number;
3278
3372
  }>;
3279
3373
  export type MJAIModelEntityType = z.infer<typeof MJAIModelSchema>;
3374
+ /**
3375
+ * zod schema definition for the entity MJ: AI Persona Vendors
3376
+ */
3377
+ export declare const MJAIPersonaVendorSchema: z.ZodObject<{
3378
+ ID: z.ZodString;
3379
+ PersonaID: z.ZodString;
3380
+ VendorID: z.ZodString;
3381
+ ModalityID: z.ZodString;
3382
+ APIName: z.ZodString;
3383
+ Status: z.ZodUnion<[z.ZodLiteral<"Active">, z.ZodLiteral<"Deprecated">, z.ZodLiteral<"Inactive">, z.ZodLiteral<"Preview">]>;
3384
+ Priority: z.ZodNumber;
3385
+ VendorSettings: z.ZodNullable<z.ZodAny>;
3386
+ __mj_CreatedAt: z.ZodDate;
3387
+ __mj_UpdatedAt: z.ZodDate;
3388
+ Persona: z.ZodString;
3389
+ Vendor: z.ZodString;
3390
+ Modality: z.ZodString;
3391
+ }, "strip", z.ZodTypeAny, {
3392
+ ID?: string;
3393
+ __mj_CreatedAt?: Date;
3394
+ __mj_UpdatedAt?: Date;
3395
+ Status?: "Active" | "Inactive" | "Deprecated" | "Preview";
3396
+ Priority?: number;
3397
+ ModalityID?: string;
3398
+ Modality?: string;
3399
+ PersonaID?: string;
3400
+ Persona?: string;
3401
+ Vendor?: string;
3402
+ VendorID?: string;
3403
+ APIName?: string;
3404
+ VendorSettings?: any;
3405
+ }, {
3406
+ ID?: string;
3407
+ __mj_CreatedAt?: Date;
3408
+ __mj_UpdatedAt?: Date;
3409
+ Status?: "Active" | "Inactive" | "Deprecated" | "Preview";
3410
+ Priority?: number;
3411
+ ModalityID?: string;
3412
+ Modality?: string;
3413
+ PersonaID?: string;
3414
+ Persona?: string;
3415
+ Vendor?: string;
3416
+ VendorID?: string;
3417
+ APIName?: string;
3418
+ VendorSettings?: any;
3419
+ }>;
3420
+ export type MJAIPersonaVendorEntityType = z.infer<typeof MJAIPersonaVendorSchema>;
3421
+ /**
3422
+ * zod schema definition for the entity MJ: AI Personas
3423
+ */
3424
+ export declare const MJAIPersonaSchema: z.ZodObject<{
3425
+ ID: z.ZodString;
3426
+ Name: z.ZodString;
3427
+ Description: z.ZodNullable<z.ZodString>;
3428
+ PerceivedGender: z.ZodNullable<z.ZodString>;
3429
+ Locale: z.ZodNullable<z.ZodString>;
3430
+ PerceivedAgeRangeMin: z.ZodNullable<z.ZodNumber>;
3431
+ PerceivedAgeRangeMax: z.ZodNullable<z.ZodNumber>;
3432
+ Tone: z.ZodNullable<z.ZodString>;
3433
+ SpeakingStyle: z.ZodNullable<z.ZodString>;
3434
+ StyleDescriptors: z.ZodNullable<z.ZodAny>;
3435
+ PreviewAudioURL: z.ZodNullable<z.ZodString>;
3436
+ PreviewImageURL: z.ZodNullable<z.ZodString>;
3437
+ PreviewVideoURL: z.ZodNullable<z.ZodString>;
3438
+ Source: z.ZodUnion<[z.ZodLiteral<"BuiltIn">, z.ZodLiteral<"Cloned">, z.ZodLiteral<"Custom">]>;
3439
+ IsActive: z.ZodBoolean;
3440
+ __mj_CreatedAt: z.ZodDate;
3441
+ __mj_UpdatedAt: z.ZodDate;
3442
+ }, "strip", z.ZodTypeAny, {
3443
+ ID?: string;
3444
+ Name?: string;
3445
+ Description?: string;
3446
+ IsActive?: boolean;
3447
+ __mj_CreatedAt?: Date;
3448
+ __mj_UpdatedAt?: Date;
3449
+ PerceivedGender?: string;
3450
+ Locale?: string;
3451
+ PerceivedAgeRangeMin?: number;
3452
+ PerceivedAgeRangeMax?: number;
3453
+ Tone?: string;
3454
+ SpeakingStyle?: string;
3455
+ StyleDescriptors?: any;
3456
+ PreviewAudioURL?: string;
3457
+ PreviewImageURL?: string;
3458
+ PreviewVideoURL?: string;
3459
+ Source?: "Custom" | "BuiltIn" | "Cloned";
3460
+ }, {
3461
+ ID?: string;
3462
+ Name?: string;
3463
+ Description?: string;
3464
+ IsActive?: boolean;
3465
+ __mj_CreatedAt?: Date;
3466
+ __mj_UpdatedAt?: Date;
3467
+ PerceivedGender?: string;
3468
+ Locale?: string;
3469
+ PerceivedAgeRangeMin?: number;
3470
+ PerceivedAgeRangeMax?: number;
3471
+ Tone?: string;
3472
+ SpeakingStyle?: string;
3473
+ StyleDescriptors?: any;
3474
+ PreviewAudioURL?: string;
3475
+ PreviewImageURL?: string;
3476
+ PreviewVideoURL?: string;
3477
+ Source?: "Custom" | "BuiltIn" | "Cloned";
3478
+ }>;
3479
+ export type MJAIPersonaEntityType = z.infer<typeof MJAIPersonaSchema>;
3280
3480
  /**
3281
3481
  * zod schema definition for the entity MJ: AI Prompt Categories
3282
3482
  */
@@ -3340,6 +3540,7 @@ export declare const MJAIPromptModelSchema: z.ZodObject<{
3340
3540
  __mj_CreatedAt: z.ZodDate;
3341
3541
  __mj_UpdatedAt: z.ZodDate;
3342
3542
  EffortLevel: z.ZodNullable<z.ZodNumber>;
3543
+ PromptConfiguration: z.ZodNullable<z.ZodAny>;
3343
3544
  Prompt: z.ZodString;
3344
3545
  Model: z.ZodString;
3345
3546
  Vendor: z.ZodNullable<z.ZodString>;
@@ -3364,6 +3565,7 @@ export declare const MJAIPromptModelSchema: z.ZodObject<{
3364
3565
  ParallelizationMode?: "None" | "ConfigParam" | "StaticCount";
3365
3566
  ParallelCount?: number;
3366
3567
  ParallelConfigParam?: string;
3568
+ PromptConfiguration?: any;
3367
3569
  }, {
3368
3570
  ID?: string;
3369
3571
  __mj_CreatedAt?: Date;
@@ -3384,6 +3586,7 @@ export declare const MJAIPromptModelSchema: z.ZodObject<{
3384
3586
  ParallelizationMode?: "None" | "ConfigParam" | "StaticCount";
3385
3587
  ParallelCount?: number;
3386
3588
  ParallelConfigParam?: string;
3589
+ PromptConfiguration?: any;
3387
3590
  }>;
3388
3591
  export type MJAIPromptModelEntityType = z.infer<typeof MJAIPromptModelSchema>;
3389
3592
  /**
@@ -3549,6 +3752,7 @@ export declare const MJAIPromptRunSchema: z.ZodObject<{
3549
3752
  InputUnitsUsed: z.ZodNullable<z.ZodNumber>;
3550
3753
  OutputUnitsUsed: z.ZodNullable<z.ZodNumber>;
3551
3754
  UsageTypeID: z.ZodNullable<z.ZodString>;
3755
+ ToolCallingMode: z.ZodNullable<z.ZodUnion<[z.ZodLiteral<"Envelope">, z.ZodLiteral<"Native">, z.ZodLiteral<"NativeFallback">, z.ZodLiteral<"NativeImplicit">]>>;
3552
3756
  Prompt: z.ZodString;
3553
3757
  Model: z.ZodString;
3554
3758
  Vendor: z.ZodString;
@@ -3592,6 +3796,7 @@ export declare const MJAIPromptRunSchema: z.ZodObject<{
3592
3796
  CompletedAt?: Date;
3593
3797
  Success?: boolean;
3594
3798
  ErrorMessage?: string;
3799
+ ToolCallingMode?: "Envelope" | "Native" | "NativeFallback" | "NativeImplicit";
3595
3800
  Result?: string;
3596
3801
  TotalCost?: number;
3597
3802
  CancellationReason?: string;
@@ -3701,6 +3906,7 @@ export declare const MJAIPromptRunSchema: z.ZodObject<{
3701
3906
  CompletedAt?: Date;
3702
3907
  Success?: boolean;
3703
3908
  ErrorMessage?: string;
3909
+ ToolCallingMode?: "Envelope" | "Native" | "NativeFallback" | "NativeImplicit";
3704
3910
  Result?: string;
3705
3911
  TotalCost?: number;
3706
3912
  CancellationReason?: string;
@@ -3867,6 +4073,7 @@ export declare const MJAIPromptSchema: z.ZodObject<{
3867
4073
  AssistantPrefill: z.ZodNullable<z.ZodString>;
3868
4074
  PrefillFallbackMode: z.ZodUnion<[z.ZodLiteral<"Ignore">, z.ZodLiteral<"None">, z.ZodLiteral<"SystemInstruction">]>;
3869
4075
  RequireSpecificModels: z.ZodBoolean;
4076
+ PromptConfiguration: z.ZodNullable<z.ZodAny>;
3870
4077
  Template: z.ZodString;
3871
4078
  Category: z.ZodNullable<z.ZodString>;
3872
4079
  Type: z.ZodString;
@@ -3889,6 +4096,7 @@ export declare const MJAIPromptSchema: z.ZodObject<{
3889
4096
  ParallelizationMode?: "None" | "ConfigParam" | "StaticCount" | "ModelSpecific";
3890
4097
  ParallelCount?: number;
3891
4098
  ParallelConfigParam?: string;
4099
+ PromptConfiguration?: any;
3892
4100
  Temperature?: number;
3893
4101
  TopP?: number;
3894
4102
  TopK?: number;
@@ -3949,6 +4157,7 @@ export declare const MJAIPromptSchema: z.ZodObject<{
3949
4157
  ParallelizationMode?: "None" | "ConfigParam" | "StaticCount" | "ModelSpecific";
3950
4158
  ParallelCount?: number;
3951
4159
  ParallelConfigParam?: string;
4160
+ PromptConfiguration?: any;
3952
4161
  Temperature?: number;
3953
4162
  TopP?: number;
3954
4163
  TopK?: number;
@@ -4118,6 +4327,7 @@ export declare const MJAISkillActionSchema: z.ZodObject<{
4118
4327
  ActionID: z.ZodString;
4119
4328
  __mj_CreatedAt: z.ZodDate;
4120
4329
  __mj_UpdatedAt: z.ZodDate;
4330
+ ExposeToModel: z.ZodBoolean;
4121
4331
  Skill: z.ZodString;
4122
4332
  Action: z.ZodString;
4123
4333
  }, "strip", z.ZodTypeAny, {
@@ -4128,6 +4338,7 @@ export declare const MJAISkillActionSchema: z.ZodObject<{
4128
4338
  Action?: string;
4129
4339
  Skill?: string;
4130
4340
  SkillID?: string;
4341
+ ExposeToModel?: boolean;
4131
4342
  }, {
4132
4343
  ID?: string;
4133
4344
  __mj_CreatedAt?: Date;
@@ -4136,6 +4347,7 @@ export declare const MJAISkillActionSchema: z.ZodObject<{
4136
4347
  Action?: string;
4137
4348
  Skill?: string;
4138
4349
  SkillID?: string;
4350
+ ExposeToModel?: boolean;
4139
4351
  }>;
4140
4352
  export type MJAISkillActionEntityType = z.infer<typeof MJAISkillActionSchema>;
4141
4353
  /**
@@ -7906,6 +8118,7 @@ export declare const MJContentProcessRunSchema: z.ZodObject<{
7906
8118
  Status?: string;
7907
8119
  Configuration?: any;
7908
8120
  ErrorMessage?: string;
8121
+ Source?: string;
7909
8122
  BatchSize?: number;
7910
8123
  ErrorCount?: number;
7911
8124
  StartTime?: Date;
@@ -7916,7 +8129,6 @@ export declare const MJContentProcessRunSchema: z.ZodObject<{
7916
8129
  TotalItemCount?: number;
7917
8130
  LastProcessedOffset?: number;
7918
8131
  CancellationRequested?: boolean;
7919
- Source?: string;
7920
8132
  StartedByUser?: string;
7921
8133
  }, {
7922
8134
  ID?: string;
@@ -7925,6 +8137,7 @@ export declare const MJContentProcessRunSchema: z.ZodObject<{
7925
8137
  Status?: string;
7926
8138
  Configuration?: any;
7927
8139
  ErrorMessage?: string;
8140
+ Source?: string;
7928
8141
  BatchSize?: number;
7929
8142
  ErrorCount?: number;
7930
8143
  StartTime?: Date;
@@ -7935,7 +8148,6 @@ export declare const MJContentProcessRunSchema: z.ZodObject<{
7935
8148
  TotalItemCount?: number;
7936
8149
  LastProcessedOffset?: number;
7937
8150
  CancellationRequested?: boolean;
7938
- Source?: string;
7939
8151
  StartedByUser?: string;
7940
8152
  }>;
7941
8153
  export type MJContentProcessRunEntityType = z.infer<typeof MJContentProcessRunSchema>;
@@ -10112,6 +10324,7 @@ export declare const MJEntitySchema: z.ZodObject<{
10112
10324
  AllowDirectSQLDelete: z.ZodBoolean;
10113
10325
  Configuration: z.ZodNullable<z.ZodAny>;
10114
10326
  SubtypeSelector: z.ZodNullable<z.ZodAny>;
10327
+ EnableFieldLevelSecurity: z.ZodBoolean;
10115
10328
  CodeName: z.ZodNullable<z.ZodString>;
10116
10329
  ClassName: z.ZodNullable<z.ZodString>;
10117
10330
  BaseTableCodeName: z.ZodNullable<z.ZodString>;
@@ -10195,6 +10408,7 @@ export declare const MJEntitySchema: z.ZodObject<{
10195
10408
  AllowDirectSQLUpdate?: boolean;
10196
10409
  AllowDirectSQLDelete?: boolean;
10197
10410
  SubtypeSelector?: any;
10411
+ EnableFieldLevelSecurity?: boolean;
10198
10412
  BaseTableCodeName?: string;
10199
10413
  ParentEntity?: string;
10200
10414
  ParentBaseTable?: string;
@@ -10276,6 +10490,7 @@ export declare const MJEntitySchema: z.ZodObject<{
10276
10490
  AllowDirectSQLUpdate?: boolean;
10277
10491
  AllowDirectSQLDelete?: boolean;
10278
10492
  SubtypeSelector?: any;
10493
+ EnableFieldLevelSecurity?: boolean;
10279
10494
  BaseTableCodeName?: string;
10280
10495
  ParentEntity?: string;
10281
10496
  ParentBaseTable?: string;
@@ -10766,6 +10981,44 @@ export declare const MJEntityDocumentSchema: z.ZodObject<{
10766
10981
  ReasoningAgent?: string;
10767
10982
  }>;
10768
10983
  export type MJEntityDocumentEntityType = z.infer<typeof MJEntityDocumentSchema>;
10984
+ /**
10985
+ * zod schema definition for the entity MJ: Entity Field Permissions
10986
+ */
10987
+ export declare const MJEntityFieldPermissionSchema: z.ZodObject<{
10988
+ ID: z.ZodString;
10989
+ EntityFieldID: z.ZodString;
10990
+ RoleID: z.ZodString;
10991
+ ReadAccess: z.ZodUnion<[z.ZodLiteral<"Allow">, z.ZodLiteral<"Deny">, z.ZodLiteral<"No Access">]>;
10992
+ UpdateAccess: z.ZodUnion<[z.ZodLiteral<"Allow">, z.ZodLiteral<"Deny">, z.ZodLiteral<"No Access">]>;
10993
+ CreateAccess: z.ZodUnion<[z.ZodLiteral<"Allow">, z.ZodLiteral<"Deny">, z.ZodLiteral<"No Access">]>;
10994
+ __mj_CreatedAt: z.ZodDate;
10995
+ __mj_UpdatedAt: z.ZodDate;
10996
+ EntityField: z.ZodString;
10997
+ Role: z.ZodString;
10998
+ }, "strip", z.ZodTypeAny, {
10999
+ ID?: string;
11000
+ __mj_CreatedAt?: Date;
11001
+ __mj_UpdatedAt?: Date;
11002
+ RoleID?: string;
11003
+ Role?: string;
11004
+ EntityFieldID?: string;
11005
+ ReadAccess?: "Allow" | "Deny" | "No Access";
11006
+ UpdateAccess?: "Allow" | "Deny" | "No Access";
11007
+ CreateAccess?: "Allow" | "Deny" | "No Access";
11008
+ EntityField?: string;
11009
+ }, {
11010
+ ID?: string;
11011
+ __mj_CreatedAt?: Date;
11012
+ __mj_UpdatedAt?: Date;
11013
+ RoleID?: string;
11014
+ Role?: string;
11015
+ EntityFieldID?: string;
11016
+ ReadAccess?: "Allow" | "Deny" | "No Access";
11017
+ UpdateAccess?: "Allow" | "Deny" | "No Access";
11018
+ CreateAccess?: "Allow" | "Deny" | "No Access";
11019
+ EntityField?: string;
11020
+ }>;
11021
+ export type MJEntityFieldPermissionEntityType = z.infer<typeof MJEntityFieldPermissionSchema>;
10769
11022
  /**
10770
11023
  * zod schema definition for the entity MJ: Entity Field Values
10771
11024
  */
@@ -12248,8 +12501,8 @@ export declare const MJGeneratedCodeSchema: z.ZodObject<{
12248
12501
  LinkedEntity?: string;
12249
12502
  CategoryID?: string;
12250
12503
  Category?: string;
12251
- Code?: string;
12252
12504
  Source?: string;
12505
+ Code?: string;
12253
12506
  GeneratedAt?: Date;
12254
12507
  GeneratedByModelID?: string;
12255
12508
  LinkedRecordPrimaryKey?: string;
@@ -12266,8 +12519,8 @@ export declare const MJGeneratedCodeSchema: z.ZodObject<{
12266
12519
  LinkedEntity?: string;
12267
12520
  CategoryID?: string;
12268
12521
  Category?: string;
12269
- Code?: string;
12270
12522
  Source?: string;
12523
+ Code?: string;
12271
12524
  GeneratedAt?: Date;
12272
12525
  GeneratedByModelID?: string;
12273
12526
  LinkedRecordPrimaryKey?: string;
@@ -15761,12 +16014,12 @@ export declare const MJRecordChangeSchema: z.ZodObject<{
15761
16014
  UserID?: string;
15762
16015
  Comments?: string;
15763
16016
  User?: string;
16017
+ Source?: "Internal" | "External" | "Restore";
15764
16018
  EntityID?: string;
15765
16019
  RecordID?: string;
15766
16020
  Entity?: string;
15767
16021
  ErrorLog?: string;
15768
16022
  IntegrationID?: string;
15769
- Source?: "Internal" | "External" | "Restore";
15770
16023
  ChangedAt?: Date;
15771
16024
  ChangesJSON?: string;
15772
16025
  ChangesDescription?: string;
@@ -15786,12 +16039,12 @@ export declare const MJRecordChangeSchema: z.ZodObject<{
15786
16039
  UserID?: string;
15787
16040
  Comments?: string;
15788
16041
  User?: string;
16042
+ Source?: "Internal" | "External" | "Restore";
15789
16043
  EntityID?: string;
15790
16044
  RecordID?: string;
15791
16045
  Entity?: string;
15792
16046
  ErrorLog?: string;
15793
16047
  IntegrationID?: string;
15794
- Source?: "Internal" | "External" | "Restore";
15795
16048
  ChangedAt?: Date;
15796
16049
  ChangesJSON?: string;
15797
16050
  ChangesDescription?: string;
@@ -17955,18 +18208,18 @@ export declare const MJTagSynonymSchema: z.ZodObject<{
17955
18208
  __mj_CreatedAt?: Date;
17956
18209
  __mj_UpdatedAt?: Date;
17957
18210
  Status?: "Active" | "Pending" | "Rejected";
18211
+ Source?: "Manual" | "Merged" | "Imported" | "LLM";
17958
18212
  Tag?: string;
17959
18213
  TagID?: string;
17960
- Source?: "Manual" | "Merged" | "Imported" | "LLM";
17961
18214
  Synonym?: string;
17962
18215
  }, {
17963
18216
  ID?: string;
17964
18217
  __mj_CreatedAt?: Date;
17965
18218
  __mj_UpdatedAt?: Date;
17966
18219
  Status?: "Active" | "Pending" | "Rejected";
18220
+ Source?: "Manual" | "Merged" | "Imported" | "LLM";
17967
18221
  Tag?: string;
17968
18222
  TagID?: string;
17969
- Source?: "Manual" | "Merged" | "Imported" | "LLM";
17970
18223
  Synonym?: string;
17971
18224
  }>;
17972
18225
  export type MJTagSynonymEntityType = z.infer<typeof MJTagSynonymSchema>;
@@ -20743,6 +20996,15 @@ export declare class MJAIAgentActionEntity extends BaseEntity<MJAIAgentActionEnt
20743
20996
  get CompactPromptID(): string | null;
20744
20997
  set CompactPromptID(value: string | null);
20745
20998
  /**
20999
+ * * Field Name: DeclareAsNativeTool
21000
+ * * Display Name: Declare As Native Tool
21001
+ * * SQL Data Type: bit
21002
+ * * Default Value: 1
21003
+ * * Description: Whether this Action may be declared as a native tool for this agent (1, default). 0 keeps it out of the tool set on native turns; because the prose catalog is not rendered in native mode, the action is then unavailable on those turns. Use for actions an agent holds but should rarely reach for on its own.
21004
+ */
21005
+ get DeclareAsNativeTool(): boolean;
21006
+ set DeclareAsNativeTool(value: boolean);
21007
+ /**
20746
21008
  * * Field Name: Agent
20747
21009
  * * Display Name: Agent
20748
21010
  * * SQL Data Type: nvarchar(255)
@@ -23407,6 +23669,142 @@ export declare class MJAIAgentPermissionEntity extends BaseEntity<MJAIAgentPermi
23407
23669
  */
23408
23670
  get User(): string | null;
23409
23671
  }
23672
+ /**
23673
+ * Agent-specific presentation style overrides for an assigned AI Persona.
23674
+ *
23675
+ * Stored as JSON in `MJ: AI Agent Personas.StyleOverride`. CodeGen emits a typed
23676
+ * `StyleOverrideObject` accessor on `MJAIAgentPersonaEntity` returning `MJAIAgentPersonaEntity_IAIAgentPersonaStyleOverride | null`.
23677
+ *
23678
+ * Allows an agent to fine-tune a catalog persona (e.g. "Aria, but more formal and authoritative")
23679
+ * without minting an entirely separate persona record.
23680
+ */
23681
+ export interface MJAIAgentPersonaEntity_IAIAgentPersonaStyleOverride {
23682
+ /** Optional override for the persona's core Tone. */
23683
+ Tone?: string;
23684
+ /** Optional override for the persona's SpeakingStyle. */
23685
+ SpeakingStyle?: string;
23686
+ /** Open extension point for additional descriptor overrides. */
23687
+ [key: string]: unknown;
23688
+ }
23689
+ /**
23690
+ * MJ: AI Agent Personas - strongly typed entity sub-class
23691
+ * * Schema: __mj
23692
+ * * Base Table: AIAgentPersona
23693
+ * * Base View: vwAIAgentPersonas
23694
+ * * @description Configures which personas an AI agent is permitted to wear, their preference order, and which persona serves as the agent's default identity.
23695
+ * * Primary Key: ID
23696
+ * @extends {BaseEntity}
23697
+ * @class
23698
+ * @public
23699
+ */
23700
+ export declare class MJAIAgentPersonaEntity extends BaseEntity<MJAIAgentPersonaEntityType> {
23701
+ /**
23702
+ * Loads the MJ: AI Agent Personas record from the database
23703
+ * @param ID: string - primary key value to load the MJ: AI Agent Personas record.
23704
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
23705
+ * @returns {Promise<boolean>} - true if successful, false otherwise
23706
+ * @public
23707
+ * @async
23708
+ * @memberof MJAIAgentPersonaEntity
23709
+ * @method
23710
+ * @override
23711
+ */
23712
+ Load(ID: string, EntityRelationshipsToLoad?: string[]): Promise<boolean>;
23713
+ /**
23714
+ * * Field Name: ID
23715
+ * * Display Name: ID
23716
+ * * SQL Data Type: uniqueidentifier
23717
+ * * Default Value: newsequentialid()
23718
+ */
23719
+ get ID(): string;
23720
+ set ID(value: string);
23721
+ /**
23722
+ * * Field Name: AgentID
23723
+ * * Display Name: Agent
23724
+ * * SQL Data Type: uniqueidentifier
23725
+ * * Related Entity/Foreign Key: MJ: AI Agents (vwAIAgents.ID)
23726
+ */
23727
+ get AgentID(): string;
23728
+ set AgentID(value: string);
23729
+ /**
23730
+ * * Field Name: PersonaID
23731
+ * * Display Name: Persona
23732
+ * * SQL Data Type: uniqueidentifier
23733
+ * * Related Entity/Foreign Key: MJ: AI Personas (vwAIPersonas.ID)
23734
+ */
23735
+ get PersonaID(): string;
23736
+ set PersonaID(value: string);
23737
+ /**
23738
+ * * Field Name: IsDefault
23739
+ * * Display Name: Is Default Persona
23740
+ * * SQL Data Type: bit
23741
+ * * Default Value: 0
23742
+ * * Description: Indicates whether this persona is the default presentation for the agent when none is explicitly requested.
23743
+ */
23744
+ get IsDefault(): boolean;
23745
+ set IsDefault(value: boolean);
23746
+ /**
23747
+ * * Field Name: Sequence
23748
+ * * Display Name: Display Sequence
23749
+ * * SQL Data Type: int
23750
+ * * Default Value: 0
23751
+ * * Description: Ordering sequence for displaying available personas in user interfaces.
23752
+ */
23753
+ get Sequence(): number;
23754
+ set Sequence(value: number);
23755
+ /**
23756
+ * * Field Name: IsAllowed
23757
+ * * Display Name: Is Allowed
23758
+ * * SQL Data Type: bit
23759
+ * * Default Value: 1
23760
+ * * Description: Whether the agent is allowed to use this persona. Set to 0 to explicitly disable or veto a persona.
23761
+ */
23762
+ get IsAllowed(): boolean;
23763
+ set IsAllowed(value: boolean);
23764
+ /**
23765
+ * * Field Name: StyleOverride
23766
+ * * Display Name: Style Override
23767
+ * * SQL Data Type: nvarchar(MAX)
23768
+ * * JSON Type: MJAIAgentPersonaEntity_IAIAgentPersonaStyleOverride
23769
+ * * Description: Optional JSON payload overriding or refining persona presentation specifically for this agent (e.g. Tone or SpeakingStyle adjustments).
23770
+ */
23771
+ get StyleOverride(): string | null;
23772
+ set StyleOverride(value: string | null);
23773
+ private _StyleOverrideObject_cached;
23774
+ private _StyleOverrideObject_lastRaw;
23775
+ /**
23776
+ * Typed accessor for StyleOverride — returns parsed JSON as MJAIAgentPersonaEntity_IAIAgentPersonaStyleOverride.
23777
+ * Uses lazy parsing with cache invalidation when the underlying raw value changes.
23778
+ */
23779
+ get StyleOverrideObject(): MJAIAgentPersonaEntity_IAIAgentPersonaStyleOverride | null;
23780
+ set StyleOverrideObject(value: MJAIAgentPersonaEntity_IAIAgentPersonaStyleOverride | null);
23781
+ /**
23782
+ * * Field Name: __mj_CreatedAt
23783
+ * * Display Name: Created At
23784
+ * * SQL Data Type: datetimeoffset
23785
+ * * Default Value: getutcdate()
23786
+ */
23787
+ get __mj_CreatedAt(): Date;
23788
+ /**
23789
+ * * Field Name: __mj_UpdatedAt
23790
+ * * Display Name: Updated At
23791
+ * * SQL Data Type: datetimeoffset
23792
+ * * Default Value: getutcdate()
23793
+ */
23794
+ get __mj_UpdatedAt(): Date;
23795
+ /**
23796
+ * * Field Name: Agent
23797
+ * * Display Name: Agent Name
23798
+ * * SQL Data Type: nvarchar(255)
23799
+ */
23800
+ get Agent(): string | null;
23801
+ /**
23802
+ * * Field Name: Persona
23803
+ * * Display Name: Persona Name
23804
+ * * SQL Data Type: nvarchar(100)
23805
+ */
23806
+ get Persona(): string;
23807
+ }
23410
23808
  /**
23411
23809
  * MJ: AI Agent Prompts - strongly typed entity sub-class
23412
23810
  * * Schema: __mj
@@ -24631,6 +25029,44 @@ detailed information about what validation rules failed.
24631
25029
  get SkillsObject(): Array<MJAIAgentRunStepEntity_AgentSkillInvocation> | null;
24632
25030
  set SkillsObject(value: Array<MJAIAgentRunStepEntity_AgentSkillInvocation> | null);
24633
25031
  /**
25032
+ * * Field Name: ToolCallingMode
25033
+ * * Display Name: Tool Calling Mode
25034
+ * * SQL Data Type: nvarchar(25)
25035
+ * * Value List Type: List
25036
+ * * Possible Values
25037
+ * * Envelope
25038
+ * * Native
25039
+ * * NativeFallback
25040
+ * * NativeImplicit
25041
+ * * Description: Which tool-calling path this step's model call took: Native (Actions as tools, envelope control flow), NativeImplicit (Actions, sub-agents, payload changes and ask_user as tools; plain text ends the turn), Envelope (prose action catalog + JSON envelope), or NativeFallback (a native attempt failed in a tools-specific way and completed via an envelope retry). NULL for steps that never reached a model call, and for rows predating the feature.
25042
+ */
25043
+ get ToolCallingMode(): 'Envelope' | 'Native' | 'NativeFallback' | 'NativeImplicit' | null;
25044
+ set ToolCallingMode(value: 'Envelope' | 'Native' | 'NativeFallback' | 'NativeImplicit' | null);
25045
+ /**
25046
+ * * Field Name: NativeToolCallCount
25047
+ * * Display Name: Native Tool Call Count
25048
+ * * SQL Data Type: int
25049
+ * * Description: How many native tool calls the model made on this step. 0 on a native-mode step where the model chose to answer with the envelope instead; NULL when the step took the envelope path or never reached a model call.
25050
+ */
25051
+ get NativeToolCallCount(): number | null;
25052
+ set NativeToolCallCount(value: number | null);
25053
+ /**
25054
+ * * Field Name: NativeDualChannel
25055
+ * * Display Name: Native Dual Channel
25056
+ * * SQL Data Type: bit
25057
+ * * Description: On a native-mode step where the model made tool calls: 1 when the same turn also carried a parseable JSON Loop envelope (the model answered on both channels; the loop dispatched the tool call and discarded the envelope), 0 when the tool calls came alone. NULL when the step made no tool calls or took the envelope path.
25058
+ */
25059
+ get NativeDualChannel(): boolean | null;
25060
+ set NativeDualChannel(value: boolean | null);
25061
+ /**
25062
+ * * Field Name: NativeToolResultsSent
25063
+ * * Display Name: Native Tool Results Sent
25064
+ * * SQL Data Type: bit
25065
+ * * Description: For native tool-calling steps: 1 = the results of this step's tool calls were returned to the model as native tool-result turns, 0 = as the markdown action-results user message. NULL for envelope steps and for rows predating the feature.
25066
+ */
25067
+ get NativeToolResultsSent(): boolean | null;
25068
+ set NativeToolResultsSent(value: boolean | null);
25069
+ /**
24634
25070
  * * Field Name: AgentRun
24635
25071
  * * Display Name: Agent Run Context
24636
25072
  * * SQL Data Type: nvarchar(255)
@@ -27932,6 +28368,15 @@ if this limit is exceeded.
27932
28368
  get ConversationSummaryPromptID(): string | null;
27933
28369
  set ConversationSummaryPromptID(value: string | null);
27934
28370
  /**
28371
+ * * Field Name: DeclareActionsAsNativeTools
28372
+ * * Display Name: Declare Actions As Native Tools
28373
+ * * SQL Data Type: bit
28374
+ * * Default Value: 1
28375
+ * * Description: When native tool calling is in effect for a run, whether this agent's Actions are declared as native tools (1, default) or withheld so the agent runs on the envelope path with the prose action catalog (0). Set 0 for coordinator agents whose prompt forbids doing work themselves. Controls supply only: capability and preference on the model and prompt still decide whether declared tools are used.
28376
+ */
28377
+ get DeclareActionsAsNativeTools(): boolean;
28378
+ set DeclareActionsAsNativeTools(value: boolean);
28379
+ /**
27935
28380
  * * Field Name: Parent
27936
28381
  * * Display Name: Parent
27937
28382
  * * SQL Data Type: nvarchar(255)
@@ -28449,6 +28894,8 @@ export interface MJAIBridgeProviderEntity_IBridgeProviderFeatures {
28449
28894
  CallTransfer?: boolean;
28450
28895
  /** The bridge can request platform recording (subject to per-jurisdiction consent handling). */
28451
28896
  Recording?: boolean;
28897
+ /** Detached media plane: platform terminates live audio directly; bridge attaches a sideband (e.g. OpenAISipBridge). */
28898
+ DetachedMediaPlane?: boolean;
28452
28899
  }
28453
28900
  /**
28454
28901
  * MJ: AI Bridge Providers - strongly typed entity sub-class
@@ -29845,6 +30292,99 @@ export declare class MJAIModelModalityEntity extends BaseEntity<MJAIModelModalit
29845
30292
  */
29846
30293
  get Modality(): string;
29847
30294
  }
30295
+ /**
30296
+ * MJ: AI Model Personas - strongly typed entity sub-class
30297
+ * * Schema: __mj
30298
+ * * Base Table: AIModelPersona
30299
+ * * Base View: vwAIModelPersonas
30300
+ * * @description Specifies per-model persona availability overrides where a model's supported personas differ from its vendor's default catalog.
30301
+ * * Primary Key: ID
30302
+ * @extends {BaseEntity}
30303
+ * @class
30304
+ * @public
30305
+ */
30306
+ export declare class MJAIModelPersonaEntity extends BaseEntity<MJAIModelPersonaEntityType> {
30307
+ /**
30308
+ * Loads the MJ: AI Model Personas record from the database
30309
+ * @param ID: string - primary key value to load the MJ: AI Model Personas record.
30310
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
30311
+ * @returns {Promise<boolean>} - true if successful, false otherwise
30312
+ * @public
30313
+ * @async
30314
+ * @memberof MJAIModelPersonaEntity
30315
+ * @method
30316
+ * @override
30317
+ */
30318
+ Load(ID: string, EntityRelationshipsToLoad?: string[]): Promise<boolean>;
30319
+ /**
30320
+ * * Field Name: ID
30321
+ * * Display Name: ID
30322
+ * * SQL Data Type: uniqueidentifier
30323
+ * * Default Value: newsequentialid()
30324
+ */
30325
+ get ID(): string;
30326
+ set ID(value: string);
30327
+ /**
30328
+ * * Field Name: ModelID
30329
+ * * Display Name: Model ID
30330
+ * * SQL Data Type: uniqueidentifier
30331
+ * * Related Entity/Foreign Key: MJ: AI Models (vwAIModels.ID)
30332
+ */
30333
+ get ModelID(): string;
30334
+ set ModelID(value: string);
30335
+ /**
30336
+ * * Field Name: PersonaID
30337
+ * * Display Name: Persona ID
30338
+ * * SQL Data Type: uniqueidentifier
30339
+ * * Related Entity/Foreign Key: MJ: AI Personas (vwAIPersonas.ID)
30340
+ */
30341
+ get PersonaID(): string;
30342
+ set PersonaID(value: string);
30343
+ /**
30344
+ * * Field Name: Sequence
30345
+ * * Display Name: Sequence
30346
+ * * SQL Data Type: int
30347
+ * * Default Value: 0
30348
+ * * Description: Deterministic ordering sequence for persona priority at the model level.
30349
+ */
30350
+ get Sequence(): number;
30351
+ set Sequence(value: number);
30352
+ /**
30353
+ * * Field Name: IsSupported
30354
+ * * Display Name: Is Supported
30355
+ * * SQL Data Type: bit
30356
+ * * Default Value: 1
30357
+ * * Description: Whether this persona is supported by the specific model. Set to 0 to explicitly disable an inherited vendor persona for this model.
30358
+ */
30359
+ get IsSupported(): boolean;
30360
+ set IsSupported(value: boolean);
30361
+ /**
30362
+ * * Field Name: __mj_CreatedAt
30363
+ * * Display Name: Created At
30364
+ * * SQL Data Type: datetimeoffset
30365
+ * * Default Value: getutcdate()
30366
+ */
30367
+ get __mj_CreatedAt(): Date;
30368
+ /**
30369
+ * * Field Name: __mj_UpdatedAt
30370
+ * * Display Name: Updated At
30371
+ * * SQL Data Type: datetimeoffset
30372
+ * * Default Value: getutcdate()
30373
+ */
30374
+ get __mj_UpdatedAt(): Date;
30375
+ /**
30376
+ * * Field Name: Model
30377
+ * * Display Name: Model
30378
+ * * SQL Data Type: nvarchar(50)
30379
+ */
30380
+ get Model(): string;
30381
+ /**
30382
+ * * Field Name: Persona
30383
+ * * Display Name: Persona
30384
+ * * SQL Data Type: nvarchar(100)
30385
+ */
30386
+ get Persona(): string;
30387
+ }
29848
30388
  /**
29849
30389
  * MJ: AI Model Price Types - strongly typed entity sub-class
29850
30390
  * * Schema: __mj
@@ -29951,6 +30491,7 @@ export declare class MJAIModelPriceUnitTypeEntity extends BaseEntity<MJAIModelPr
29951
30491
  * Validate() method override for MJ: AI Model Price Unit Types entity. This is an auto-generated method that invokes the generated validators for this entity for the following fields:
29952
30492
  * * DriverClass: This rule ensures that the DriverClass field contains at least one non-whitespace character and is not left blank.
29953
30493
  * * Name: This rule ensures that the Name field is not empty or made up only of spaces. It must contain at least one non-space character.
30494
+ * * UnitsPerBillingUnit: Units per billing unit must be greater than zero to ensure valid billing calculations.
29954
30495
  * @public
29955
30496
  * @method
29956
30497
  * @override
@@ -29971,6 +30512,13 @@ export declare class MJAIModelPriceUnitTypeEntity extends BaseEntity<MJAIModelPr
29971
30512
  */
29972
30513
  ValidateNameHasNonWhitespaceCharacters(result: ValidationResult): void;
29973
30514
  /**
30515
+ * Units per billing unit must be greater than zero to ensure valid billing calculations.
30516
+ * @param result - the ValidationResult object to add any errors or warnings to
30517
+ * @public
30518
+ * @method
30519
+ */
30520
+ ValidateUnitsPerBillingUnitGreaterThanZero(result: ValidationResult): void;
30521
+ /**
29974
30522
  * * Field Name: ID
29975
30523
  * * Display Name: ID
29976
30524
  * * SQL Data Type: uniqueidentifier
@@ -30041,70 +30589,207 @@ export declare class MJAIModelPriceUnitTypeEntity extends BaseEntity<MJAIModelPr
30041
30589
  get UsageType(): string | null;
30042
30590
  }
30043
30591
  /**
30044
- * The per-modality model-configuration bag, stored as JSON in the `ModelConfiguration` column of
30045
- * THREE catalog entities — the same type at every level, forming an inherit-with-override cascade
30046
- * resolved base-first (deep-merged per key by `ResolveEffectiveModelConfiguration` in
30047
- * `@memberjunction/ai`):
30592
+ * The AI stack's per-modality configuration bags ONE source of truth for every layer.
30593
+ *
30594
+ * Two kinds of type live here, and the distinction is the whole point of the file:
30595
+ *
30596
+ * 1. **Shared modality sections** (`MJAIModelTypeEntity_LLMConfigurationSettings`, `MJAIModelTypeEntity_RealtimeConfigurationSettings`,
30597
+ * `MJAIModelTypeEntity_VisionConfigurationSettings`, `MJAIModelTypeEntity_AudioConfigurationSettings`) — what "the LLM configuration"
30598
+ * MEANS, defined once and reused by every layer that carries a configuration bag.
30599
+ * 2. **Per-table outer types** (`MJAIModelTypeEntity_IAIModelConfiguration`, `MJAIModelTypeEntity_IAIPromptConfiguration`,
30600
+ * `MJAIModelTypeEntity_IAIPromptModelConfiguration`) — one per `JSONType`, so each table names its own type even
30601
+ * though they compose the same sections.
30048
30602
  *
30049
30603
  * ```
30050
30604
  * MJ: AI Model Types . ModelConfiguration (type-wide default — e.g. every Realtime model)
30051
30605
  * < MJ: AI Models . ModelConfiguration (per-model)
30052
30606
  * < MJ: AI Model Vendors . ModelConfiguration (per model-on-this-provider — the winner)
30607
+ *
30608
+ * MJ: AI Prompts . PromptConfiguration (per-prompt)
30609
+ * < MJ: AI Prompt Models . PromptConfiguration (per prompt-on-this-model — the winner)
30053
30610
  * ```
30054
30611
  *
30055
- * CodeGen emits a strongly-typed `ModelConfigurationObject` accessor on all three generated
30056
- * entities from this definition.
30612
+ * The catalog cascade is resolved base-first with per-key deep merge by
30613
+ * `ResolveEffectiveModelConfiguration` in `@memberjunction/ai`; the prompt cascade is resolved by
30614
+ * the prompt runner, which layers the prompt bags ON TOP of the catalog result.
30615
+ *
30616
+ * **Why one file**: `EntityField.JSONTypeDefinition` stores this text VERBATIM, and CodeGen emits
30617
+ * it inline above each entity class with every top-level name prefixed (`MJAIModelEntity_…`). It
30618
+ * therefore has to be self-contained — a definition cannot `import` a sibling, and `@file:`
30619
+ * substitutes a whole file rather than splicing one into another. Keeping every AI configuration
30620
+ * type in ONE file is what makes a shared section possible at all; the cost is that each of the
30621
+ * five entities emits the full (prefixed) set, including outer types it does not use.
30057
30622
  *
30058
30623
  * **Lockstep contract**: this file is the JSONType SOURCE; its package-side mirror is
30059
- * `AIModelConfiguration` in `@memberjunction/ai` (`packages/AI/Core/src/generic/modelConfiguration.ts`),
30060
- * which runtime code compiles against. Keep the two in step when adding a section or property —
30061
- * the same pact `IAgentSettings` follows with `@memberjunction/ai-core-plus`.
30624
+ * `packages/AI/Core/src/generic/modelConfiguration.ts` in `@memberjunction/ai`, which runtime code
30625
+ * compiles against. Keep the two in step when adding a section or property — the same pact
30626
+ * `IAgentSettings` follows with `@memberjunction/ai-core-plus`.
30062
30627
  *
30063
- * **Boundary rule**: anything the engine filters, sorts, or joins on stays a COLUMN
30064
- * (`PowerRank`, `IsActive`, `Priority`, `Status` — SQL cannot cheaply predicate into this bag);
30065
- * anything a driver consumes at session/call time belongs HERE. New capability knobs go in this
30066
- * bag do not add a new capability column per knob.
30628
+ * **Boundary rule**: anything the engine filters, sorts, or joins on stays a COLUMN (`PowerRank`,
30629
+ * `IsActive`, `Priority`, `Status` — SQL cannot cheaply predicate into this bag); anything a driver
30630
+ * or runner consumes at call time belongs HERE. New capability knobs go in the bag — do not add a
30631
+ * capability column per knob. A knob graduates to a real column when it needs a foreign key or
30632
+ * becomes a first-class thing the platform reasons about.
30067
30633
  */
30068
- export interface MJAIModelTypeEntity_IAIModelConfiguration {
30634
+ /**
30635
+ * Text-generation knobs, consumed by the LLM drivers and the prompt runner at call time.
30636
+ *
30637
+ * Every flag is TRI-STATE (`boolean | null | absent`) and the three differ: the cascade REPLACES on
30638
+ * any explicit value (including `null`) and only skips a layer that OMITS the property. So absent
30639
+ * means "inherit", while an explicit value at a higher layer overrides a lower one even when false.
30640
+ *
30641
+ * Properties are marked with the layers that HONOR them. A property set at a layer that does not
30642
+ * honor it is inert, not an error — that tolerance is deliberate, so a knob can move between layers
30643
+ * without a schema change.
30644
+ */
30645
+ export interface MJAIModelTypeEntity_LLMConfigurationSettings {
30069
30646
  /**
30070
- * Text-generation knobs. Reserved no consumers yet. Candidate contents: per-model
30071
- * effort-level defaults, response-format quirks, tool-calling behavior flags. Existing
30072
- * capability COLUMNS (`SupportsEffortLevel`, `SupportsStreaming`, …) are NOT migrating here —
30073
- * new knobs only.
30647
+ * **Catalog layers only** (model type / model / model vendor). Whether this model — or this
30648
+ * vendor's serving of it — supports native tool/function calling.
30649
+ *
30650
+ * CAPABILITY flag, and a hard gate: no policy or preference at any layer can force tools onto a
30651
+ * (model, vendor) whose resolved value is not true. Set `false` only for a model or serving path
30652
+ * verified NOT to support tools; leave absent when support is unknown, because absent is the
30653
+ * honest value and it inherits.
30074
30654
  */
30075
- LLM?: Record<string, unknown> | null;
30076
- /** Realtime (speech-to-speech) knobs — the first live section. */
30077
- Realtime?: {
30078
- /**
30079
- * Catalog-level turn-detection default for this model. Folded into the realtime session
30080
- * Config bag as the `turnDetection` key BELOW the agent/app config cascade
30081
- * (`realtime.session.turnDetection`) and the runtime override — the catalog supplies the
30082
- * default, agents/apps/callers refine it. Provider profiles translate the normalized
30083
- * vocabulary to their native wire block; an unsupported Mode is diag-logged and falls back
30084
- * to the profile default (never rejects a session).
30085
- */
30086
- TurnDetection?: {
30087
- /**
30088
- * - 'default' — let the provider profile decide (today's behavior).
30089
- * - 'serverVad' — classic silence-based server VAD.
30090
- * - 'semanticVad' semantic end-of-utterance detection (OpenAI `semantic_vad`).
30091
- * - 'native' this model's smartest documented turn/duplex mode, whatever the profile
30092
- * maps it to; the forward slot for full-duplex reasoning voice models (e.g. the
30093
- * Grok Voice Think Fast family).
30094
- */
30095
- Mode?: 'default' | 'serverVad' | 'semanticVad' | 'native' | null;
30096
- /** Semantic-VAD aggressiveness (OpenAI `eagerness`); ignored without a mapping. */
30097
- Eagerness?: 'low' | 'auto' | 'high' | null;
30098
- /** Server-VAD activation threshold (0–1); ignored without a mapping. */
30099
- Threshold?: number | null;
30100
- /** Server-VAD trailing-silence duration in ms; ignored without a mapping. */
30101
- SilenceDurationMs?: number | null;
30102
- } | null;
30655
+ SupportsNativeToolCalling?: boolean | null;
30656
+ /**
30657
+ * **Catalog layers only.** Whether prompts run against this model default to native tool calling
30658
+ * when they express no preference of their own. POLICY flag — subordinate to
30659
+ * {@link MJAIModelTypeEntity_LLMConfigurationSettings.SupportsNativeToolCalling}.
30660
+ */
30661
+ DefaultToNativeToolCalling?: boolean | null;
30662
+ /**
30663
+ * **Prompt layers only** (prompt / prompt model). Whether THIS prompt asks for native tool
30664
+ * calling. PREFERENCE — it outranks the catalog's `DefaultToNativeToolCalling`, and is still
30665
+ * subordinate to the capability gate. Absent means "no preference; fall through to the model's
30666
+ * default".
30667
+ */
30668
+ UseNativeToolCalling?: boolean | null;
30669
+ /**
30670
+ * **Catalog layers only.** How control flow is expressed when a request resolves to native tool
30671
+ * calling. `'envelope'` (the default when absent) is the hybrid: Actions are tools, everything
30672
+ * else completion, chat, delegation, payload changes is the JSON envelope. `'implicit'` is the
30673
+ * implicit protocol: sub-agents, `payload_change_request` and `ask_user` are tools too, a tool call
30674
+ * continues the loop, and plain text with no call ends the turn as task completion. Consulted only
30675
+ * when the gate resolves native; subordinate to {@link MJAIModelTypeEntity_LLMConfigurationSettings.SupportsNativeToolCalling}.
30676
+ */
30677
+ NativeControlFlow?: 'envelope' | 'implicit' | null;
30678
+ /**
30679
+ * **Catalog layers only.** Whether action results are returned to the model as native tool-result
30680
+ * turns instead of a markdown "Action results" user message. Absent means `false`. Consulted
30681
+ * only when the gate resolves native.
30682
+ */
30683
+ NativeToolResults?: boolean | null;
30684
+ }
30685
+ /**
30686
+ * MJ-normalized turn-detection settings for realtime (speech-to-speech) models. Every field is
30687
+ * optional; absent fields contribute nothing. Provider profiles translate this vocabulary to their
30688
+ * native wire block, and an unsupported value is diagnostic-logged and falls back to the profile
30689
+ * default — a wrong inherited value degrades safely, it never rejects a session.
30690
+ */
30691
+ export interface MJAIModelTypeEntity_RealtimeTurnDetectionSettings {
30692
+ /**
30693
+ * - `'default'` — let the provider profile decide (today's behavior).
30694
+ * - `'serverVad'` — classic silence-based server VAD.
30695
+ * - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
30696
+ * - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
30697
+ * to; the forward slot for full-duplex reasoning voice models.
30698
+ */
30699
+ Mode?: 'default' | 'serverVad' | 'semanticVad' | 'native' | null;
30700
+ /** Semantic-VAD aggressiveness (OpenAI `eagerness`); ignored without a mapping. */
30701
+ Eagerness?: 'low' | 'auto' | 'high' | null;
30702
+ /** Server-VAD activation threshold (0–1); ignored without a mapping. */
30703
+ Threshold?: number | null;
30704
+ /** Server-VAD trailing-silence duration in ms; ignored without a mapping. */
30705
+ SilenceDurationMs?: number | null;
30706
+ }
30707
+ /**
30708
+ * Reasoning-plane settings for realtime models — dual delegation configuration. Absent defaults to
30709
+ * `'local'`.
30710
+ */
30711
+ export interface MJAIModelTypeEntity_RealtimeReasoningSettings {
30712
+ /**
30713
+ * Which plane handles reasoning:
30714
+ * - `'local'` — application/agent loop (default).
30715
+ * - `'remote'` — delegated to remote model or hosted agent.
30716
+ */
30717
+ Plane?: 'local' | 'remote' | null;
30718
+ /** Remote reasoning target configuration. */
30719
+ Remote?: {
30720
+ Kind?: 'model' | 'hostedAgent' | null;
30721
+ Ref?: string | null;
30722
+ Effort?: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | null;
30723
+ MaxOutputTokens?: number | null;
30103
30724
  } | null;
30725
+ }
30726
+ /** Realtime (speech-to-speech) knobs. */
30727
+ export interface MJAIModelTypeEntity_RealtimeConfigurationSettings {
30728
+ /**
30729
+ * Catalog-level turn-detection default for this model. Folded into the realtime session Config
30730
+ * bag as the `turnDetection` key BELOW the agent/app config cascade
30731
+ * (`realtime.session.turnDetection`) and the runtime override — the catalog supplies the
30732
+ * default, agents/apps/callers refine it.
30733
+ */
30734
+ TurnDetection?: MJAIModelTypeEntity_RealtimeTurnDetectionSettings | null;
30735
+ /**
30736
+ * Reasoning plane settings — dual delegation configuration. Absent defaults to `'local'`.
30737
+ */
30738
+ Reasoning?: MJAIModelTypeEntity_RealtimeReasoningSettings | null;
30739
+ }
30740
+ /** Vision knobs. Reserved — no consumers yet. */
30741
+ export interface MJAIModelTypeEntity_VisionConfigurationSettings {
30742
+ [key: string]: unknown;
30743
+ }
30744
+ /** Audio (TTS/STT) knobs. Reserved — no consumers yet. */
30745
+ export interface MJAIModelTypeEntity_AudioConfigurationSettings {
30746
+ [key: string]: unknown;
30747
+ }
30748
+ /**
30749
+ * The `ModelConfiguration` column on the three MODEL-CATALOG entities (`MJ: AI Model Types`,
30750
+ * `MJ: AI Models`, `MJ: AI Model Vendors`), which form an inherit-with-override cascade. Sections
30751
+ * are per-modality so one catalog row can configure everything its model does.
30752
+ */
30753
+ export interface MJAIModelTypeEntity_IAIModelConfiguration {
30754
+ /** Text-generation knobs. Honors the catalog-layer properties. */
30755
+ LLM?: MJAIModelTypeEntity_LLMConfigurationSettings | null;
30756
+ /** Realtime (speech-to-speech) knobs. */
30757
+ Realtime?: MJAIModelTypeEntity_RealtimeConfigurationSettings | null;
30104
30758
  /** Vision knobs. Reserved. */
30105
- Vision?: Record<string, unknown> | null;
30759
+ Vision?: MJAIModelTypeEntity_VisionConfigurationSettings | null;
30106
30760
  /** Audio (TTS/STT) knobs. Reserved. */
30107
- Audio?: Record<string, unknown> | null;
30761
+ Audio?: MJAIModelTypeEntity_AudioConfigurationSettings | null;
30762
+ }
30763
+ /**
30764
+ * The `PromptConfiguration` column on `MJ: AI Prompts` — per-prompt call-time knobs, layered ON TOP of the
30765
+ * resolved model-catalog configuration by the prompt runner.
30766
+ *
30767
+ * The same anti-widening argument that produced `ModelConfiguration` applies here with more force:
30768
+ * `AIPrompt` already carries fifty-odd columns. New per-prompt call-time knobs land here.
30769
+ */
30770
+ export interface MJAIModelTypeEntity_IAIPromptConfiguration {
30771
+ /** Text-generation knobs. Honors the prompt-layer properties. */
30772
+ LLM?: MJAIModelTypeEntity_LLMConfigurationSettings | null;
30773
+ /** Realtime knobs. Reserved at this layer. */
30774
+ Realtime?: MJAIModelTypeEntity_RealtimeConfigurationSettings | null;
30775
+ /** Vision knobs. Reserved. */
30776
+ Vision?: MJAIModelTypeEntity_VisionConfigurationSettings | null;
30777
+ /** Audio knobs. Reserved. */
30778
+ Audio?: MJAIModelTypeEntity_AudioConfigurationSettings | null;
30779
+ }
30780
+ /**
30781
+ * The `PromptConfiguration` column on `MJ: AI Prompt Models` — the most specific layer, overriding both
30782
+ * the prompt's own bag and the model catalog for this one (prompt, model) pairing.
30783
+ */
30784
+ export interface MJAIModelTypeEntity_IAIPromptModelConfiguration {
30785
+ /** Text-generation knobs. Honors the prompt-layer properties. */
30786
+ LLM?: MJAIModelTypeEntity_LLMConfigurationSettings | null;
30787
+ /** Realtime knobs. Reserved at this layer. */
30788
+ Realtime?: MJAIModelTypeEntity_RealtimeConfigurationSettings | null;
30789
+ /** Vision knobs. Reserved. */
30790
+ Vision?: MJAIModelTypeEntity_VisionConfigurationSettings | null;
30791
+ /** Audio knobs. Reserved. */
30792
+ Audio?: MJAIModelTypeEntity_AudioConfigurationSettings | null;
30108
30793
  }
30109
30794
  /**
30110
30795
  * MJ: AI Model Types - strongly typed entity sub-class
@@ -30232,70 +30917,207 @@ export declare class MJAIModelTypeEntity extends BaseEntity<MJAIModelTypeEntityT
30232
30917
  get DefaultOutputModality(): string;
30233
30918
  }
30234
30919
  /**
30235
- * The per-modality model-configuration bag, stored as JSON in the `ModelConfiguration` column of
30236
- * THREE catalog entities — the same type at every level, forming an inherit-with-override cascade
30237
- * resolved base-first (deep-merged per key by `ResolveEffectiveModelConfiguration` in
30238
- * `@memberjunction/ai`):
30920
+ * The AI stack's per-modality configuration bags ONE source of truth for every layer.
30921
+ *
30922
+ * Two kinds of type live here, and the distinction is the whole point of the file:
30923
+ *
30924
+ * 1. **Shared modality sections** (`MJAIModelVendorEntity_LLMConfigurationSettings`, `MJAIModelVendorEntity_RealtimeConfigurationSettings`,
30925
+ * `MJAIModelVendorEntity_VisionConfigurationSettings`, `MJAIModelVendorEntity_AudioConfigurationSettings`) — what "the LLM configuration"
30926
+ * MEANS, defined once and reused by every layer that carries a configuration bag.
30927
+ * 2. **Per-table outer types** (`MJAIModelVendorEntity_IAIModelConfiguration`, `MJAIModelVendorEntity_IAIPromptConfiguration`,
30928
+ * `MJAIModelVendorEntity_IAIPromptModelConfiguration`) — one per `JSONType`, so each table names its own type even
30929
+ * though they compose the same sections.
30239
30930
  *
30240
30931
  * ```
30241
30932
  * MJ: AI Model Types . ModelConfiguration (type-wide default — e.g. every Realtime model)
30242
30933
  * < MJ: AI Models . ModelConfiguration (per-model)
30243
30934
  * < MJ: AI Model Vendors . ModelConfiguration (per model-on-this-provider — the winner)
30935
+ *
30936
+ * MJ: AI Prompts . PromptConfiguration (per-prompt)
30937
+ * < MJ: AI Prompt Models . PromptConfiguration (per prompt-on-this-model — the winner)
30244
30938
  * ```
30245
30939
  *
30246
- * CodeGen emits a strongly-typed `ModelConfigurationObject` accessor on all three generated
30247
- * entities from this definition.
30940
+ * The catalog cascade is resolved base-first with per-key deep merge by
30941
+ * `ResolveEffectiveModelConfiguration` in `@memberjunction/ai`; the prompt cascade is resolved by
30942
+ * the prompt runner, which layers the prompt bags ON TOP of the catalog result.
30943
+ *
30944
+ * **Why one file**: `EntityField.JSONTypeDefinition` stores this text VERBATIM, and CodeGen emits
30945
+ * it inline above each entity class with every top-level name prefixed (`MJAIModelEntity_…`). It
30946
+ * therefore has to be self-contained — a definition cannot `import` a sibling, and `@file:`
30947
+ * substitutes a whole file rather than splicing one into another. Keeping every AI configuration
30948
+ * type in ONE file is what makes a shared section possible at all; the cost is that each of the
30949
+ * five entities emits the full (prefixed) set, including outer types it does not use.
30248
30950
  *
30249
30951
  * **Lockstep contract**: this file is the JSONType SOURCE; its package-side mirror is
30250
- * `AIModelConfiguration` in `@memberjunction/ai` (`packages/AI/Core/src/generic/modelConfiguration.ts`),
30251
- * which runtime code compiles against. Keep the two in step when adding a section or property —
30252
- * the same pact `IAgentSettings` follows with `@memberjunction/ai-core-plus`.
30952
+ * `packages/AI/Core/src/generic/modelConfiguration.ts` in `@memberjunction/ai`, which runtime code
30953
+ * compiles against. Keep the two in step when adding a section or property — the same pact
30954
+ * `IAgentSettings` follows with `@memberjunction/ai-core-plus`.
30253
30955
  *
30254
- * **Boundary rule**: anything the engine filters, sorts, or joins on stays a COLUMN
30255
- * (`PowerRank`, `IsActive`, `Priority`, `Status` — SQL cannot cheaply predicate into this bag);
30256
- * anything a driver consumes at session/call time belongs HERE. New capability knobs go in this
30257
- * bag do not add a new capability column per knob.
30956
+ * **Boundary rule**: anything the engine filters, sorts, or joins on stays a COLUMN (`PowerRank`,
30957
+ * `IsActive`, `Priority`, `Status` — SQL cannot cheaply predicate into this bag); anything a driver
30958
+ * or runner consumes at call time belongs HERE. New capability knobs go in the bag — do not add a
30959
+ * capability column per knob. A knob graduates to a real column when it needs a foreign key or
30960
+ * becomes a first-class thing the platform reasons about.
30258
30961
  */
30259
- export interface MJAIModelVendorEntity_IAIModelConfiguration {
30962
+ /**
30963
+ * Text-generation knobs, consumed by the LLM drivers and the prompt runner at call time.
30964
+ *
30965
+ * Every flag is TRI-STATE (`boolean | null | absent`) and the three differ: the cascade REPLACES on
30966
+ * any explicit value (including `null`) and only skips a layer that OMITS the property. So absent
30967
+ * means "inherit", while an explicit value at a higher layer overrides a lower one even when false.
30968
+ *
30969
+ * Properties are marked with the layers that HONOR them. A property set at a layer that does not
30970
+ * honor it is inert, not an error — that tolerance is deliberate, so a knob can move between layers
30971
+ * without a schema change.
30972
+ */
30973
+ export interface MJAIModelVendorEntity_LLMConfigurationSettings {
30260
30974
  /**
30261
- * Text-generation knobs. Reserved no consumers yet. Candidate contents: per-model
30262
- * effort-level defaults, response-format quirks, tool-calling behavior flags. Existing
30263
- * capability COLUMNS (`SupportsEffortLevel`, `SupportsStreaming`, …) are NOT migrating here —
30264
- * new knobs only.
30975
+ * **Catalog layers only** (model type / model / model vendor). Whether this model — or this
30976
+ * vendor's serving of it — supports native tool/function calling.
30977
+ *
30978
+ * CAPABILITY flag, and a hard gate: no policy or preference at any layer can force tools onto a
30979
+ * (model, vendor) whose resolved value is not true. Set `false` only for a model or serving path
30980
+ * verified NOT to support tools; leave absent when support is unknown, because absent is the
30981
+ * honest value and it inherits.
30265
30982
  */
30266
- LLM?: Record<string, unknown> | null;
30267
- /** Realtime (speech-to-speech) knobs — the first live section. */
30268
- Realtime?: {
30269
- /**
30270
- * Catalog-level turn-detection default for this model. Folded into the realtime session
30271
- * Config bag as the `turnDetection` key BELOW the agent/app config cascade
30272
- * (`realtime.session.turnDetection`) and the runtime override — the catalog supplies the
30273
- * default, agents/apps/callers refine it. Provider profiles translate the normalized
30274
- * vocabulary to their native wire block; an unsupported Mode is diag-logged and falls back
30275
- * to the profile default (never rejects a session).
30276
- */
30277
- TurnDetection?: {
30278
- /**
30279
- * - 'default' — let the provider profile decide (today's behavior).
30280
- * - 'serverVad' — classic silence-based server VAD.
30281
- * - 'semanticVad' semantic end-of-utterance detection (OpenAI `semantic_vad`).
30282
- * - 'native' this model's smartest documented turn/duplex mode, whatever the profile
30283
- * maps it to; the forward slot for full-duplex reasoning voice models (e.g. the
30284
- * Grok Voice Think Fast family).
30285
- */
30286
- Mode?: 'default' | 'serverVad' | 'semanticVad' | 'native' | null;
30287
- /** Semantic-VAD aggressiveness (OpenAI `eagerness`); ignored without a mapping. */
30288
- Eagerness?: 'low' | 'auto' | 'high' | null;
30289
- /** Server-VAD activation threshold (0–1); ignored without a mapping. */
30290
- Threshold?: number | null;
30291
- /** Server-VAD trailing-silence duration in ms; ignored without a mapping. */
30292
- SilenceDurationMs?: number | null;
30293
- } | null;
30983
+ SupportsNativeToolCalling?: boolean | null;
30984
+ /**
30985
+ * **Catalog layers only.** Whether prompts run against this model default to native tool calling
30986
+ * when they express no preference of their own. POLICY flag — subordinate to
30987
+ * {@link MJAIModelVendorEntity_LLMConfigurationSettings.SupportsNativeToolCalling}.
30988
+ */
30989
+ DefaultToNativeToolCalling?: boolean | null;
30990
+ /**
30991
+ * **Prompt layers only** (prompt / prompt model). Whether THIS prompt asks for native tool
30992
+ * calling. PREFERENCE — it outranks the catalog's `DefaultToNativeToolCalling`, and is still
30993
+ * subordinate to the capability gate. Absent means "no preference; fall through to the model's
30994
+ * default".
30995
+ */
30996
+ UseNativeToolCalling?: boolean | null;
30997
+ /**
30998
+ * **Catalog layers only.** How control flow is expressed when a request resolves to native tool
30999
+ * calling. `'envelope'` (the default when absent) is the hybrid: Actions are tools, everything
31000
+ * else completion, chat, delegation, payload changes is the JSON envelope. `'implicit'` is the
31001
+ * implicit protocol: sub-agents, `payload_change_request` and `ask_user` are tools too, a tool call
31002
+ * continues the loop, and plain text with no call ends the turn as task completion. Consulted only
31003
+ * when the gate resolves native; subordinate to {@link MJAIModelVendorEntity_LLMConfigurationSettings.SupportsNativeToolCalling}.
31004
+ */
31005
+ NativeControlFlow?: 'envelope' | 'implicit' | null;
31006
+ /**
31007
+ * **Catalog layers only.** Whether action results are returned to the model as native tool-result
31008
+ * turns instead of a markdown "Action results" user message. Absent means `false`. Consulted
31009
+ * only when the gate resolves native.
31010
+ */
31011
+ NativeToolResults?: boolean | null;
31012
+ }
31013
+ /**
31014
+ * MJ-normalized turn-detection settings for realtime (speech-to-speech) models. Every field is
31015
+ * optional; absent fields contribute nothing. Provider profiles translate this vocabulary to their
31016
+ * native wire block, and an unsupported value is diagnostic-logged and falls back to the profile
31017
+ * default — a wrong inherited value degrades safely, it never rejects a session.
31018
+ */
31019
+ export interface MJAIModelVendorEntity_RealtimeTurnDetectionSettings {
31020
+ /**
31021
+ * - `'default'` — let the provider profile decide (today's behavior).
31022
+ * - `'serverVad'` — classic silence-based server VAD.
31023
+ * - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
31024
+ * - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
31025
+ * to; the forward slot for full-duplex reasoning voice models.
31026
+ */
31027
+ Mode?: 'default' | 'serverVad' | 'semanticVad' | 'native' | null;
31028
+ /** Semantic-VAD aggressiveness (OpenAI `eagerness`); ignored without a mapping. */
31029
+ Eagerness?: 'low' | 'auto' | 'high' | null;
31030
+ /** Server-VAD activation threshold (0–1); ignored without a mapping. */
31031
+ Threshold?: number | null;
31032
+ /** Server-VAD trailing-silence duration in ms; ignored without a mapping. */
31033
+ SilenceDurationMs?: number | null;
31034
+ }
31035
+ /**
31036
+ * Reasoning-plane settings for realtime models — dual delegation configuration. Absent defaults to
31037
+ * `'local'`.
31038
+ */
31039
+ export interface MJAIModelVendorEntity_RealtimeReasoningSettings {
31040
+ /**
31041
+ * Which plane handles reasoning:
31042
+ * - `'local'` — application/agent loop (default).
31043
+ * - `'remote'` — delegated to remote model or hosted agent.
31044
+ */
31045
+ Plane?: 'local' | 'remote' | null;
31046
+ /** Remote reasoning target configuration. */
31047
+ Remote?: {
31048
+ Kind?: 'model' | 'hostedAgent' | null;
31049
+ Ref?: string | null;
31050
+ Effort?: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | null;
31051
+ MaxOutputTokens?: number | null;
30294
31052
  } | null;
31053
+ }
31054
+ /** Realtime (speech-to-speech) knobs. */
31055
+ export interface MJAIModelVendorEntity_RealtimeConfigurationSettings {
31056
+ /**
31057
+ * Catalog-level turn-detection default for this model. Folded into the realtime session Config
31058
+ * bag as the `turnDetection` key BELOW the agent/app config cascade
31059
+ * (`realtime.session.turnDetection`) and the runtime override — the catalog supplies the
31060
+ * default, agents/apps/callers refine it.
31061
+ */
31062
+ TurnDetection?: MJAIModelVendorEntity_RealtimeTurnDetectionSettings | null;
31063
+ /**
31064
+ * Reasoning plane settings — dual delegation configuration. Absent defaults to `'local'`.
31065
+ */
31066
+ Reasoning?: MJAIModelVendorEntity_RealtimeReasoningSettings | null;
31067
+ }
31068
+ /** Vision knobs. Reserved — no consumers yet. */
31069
+ export interface MJAIModelVendorEntity_VisionConfigurationSettings {
31070
+ [key: string]: unknown;
31071
+ }
31072
+ /** Audio (TTS/STT) knobs. Reserved — no consumers yet. */
31073
+ export interface MJAIModelVendorEntity_AudioConfigurationSettings {
31074
+ [key: string]: unknown;
31075
+ }
31076
+ /**
31077
+ * The `ModelConfiguration` column on the three MODEL-CATALOG entities (`MJ: AI Model Types`,
31078
+ * `MJ: AI Models`, `MJ: AI Model Vendors`), which form an inherit-with-override cascade. Sections
31079
+ * are per-modality so one catalog row can configure everything its model does.
31080
+ */
31081
+ export interface MJAIModelVendorEntity_IAIModelConfiguration {
31082
+ /** Text-generation knobs. Honors the catalog-layer properties. */
31083
+ LLM?: MJAIModelVendorEntity_LLMConfigurationSettings | null;
31084
+ /** Realtime (speech-to-speech) knobs. */
31085
+ Realtime?: MJAIModelVendorEntity_RealtimeConfigurationSettings | null;
30295
31086
  /** Vision knobs. Reserved. */
30296
- Vision?: Record<string, unknown> | null;
31087
+ Vision?: MJAIModelVendorEntity_VisionConfigurationSettings | null;
30297
31088
  /** Audio (TTS/STT) knobs. Reserved. */
30298
- Audio?: Record<string, unknown> | null;
31089
+ Audio?: MJAIModelVendorEntity_AudioConfigurationSettings | null;
31090
+ }
31091
+ /**
31092
+ * The `PromptConfiguration` column on `MJ: AI Prompts` — per-prompt call-time knobs, layered ON TOP of the
31093
+ * resolved model-catalog configuration by the prompt runner.
31094
+ *
31095
+ * The same anti-widening argument that produced `ModelConfiguration` applies here with more force:
31096
+ * `AIPrompt` already carries fifty-odd columns. New per-prompt call-time knobs land here.
31097
+ */
31098
+ export interface MJAIModelVendorEntity_IAIPromptConfiguration {
31099
+ /** Text-generation knobs. Honors the prompt-layer properties. */
31100
+ LLM?: MJAIModelVendorEntity_LLMConfigurationSettings | null;
31101
+ /** Realtime knobs. Reserved at this layer. */
31102
+ Realtime?: MJAIModelVendorEntity_RealtimeConfigurationSettings | null;
31103
+ /** Vision knobs. Reserved. */
31104
+ Vision?: MJAIModelVendorEntity_VisionConfigurationSettings | null;
31105
+ /** Audio knobs. Reserved. */
31106
+ Audio?: MJAIModelVendorEntity_AudioConfigurationSettings | null;
31107
+ }
31108
+ /**
31109
+ * The `PromptConfiguration` column on `MJ: AI Prompt Models` — the most specific layer, overriding both
31110
+ * the prompt's own bag and the model catalog for this one (prompt, model) pairing.
31111
+ */
31112
+ export interface MJAIModelVendorEntity_IAIPromptModelConfiguration {
31113
+ /** Text-generation knobs. Honors the prompt-layer properties. */
31114
+ LLM?: MJAIModelVendorEntity_LLMConfigurationSettings | null;
31115
+ /** Realtime knobs. Reserved at this layer. */
31116
+ Realtime?: MJAIModelVendorEntity_RealtimeConfigurationSettings | null;
31117
+ /** Vision knobs. Reserved. */
31118
+ Vision?: MJAIModelVendorEntity_VisionConfigurationSettings | null;
31119
+ /** Audio knobs. Reserved. */
31120
+ Audio?: MJAIModelVendorEntity_AudioConfigurationSettings | null;
30299
31121
  }
30300
31122
  /**
30301
31123
  * MJ: AI Model Vendors - strongly typed entity sub-class
@@ -30543,70 +31365,207 @@ export declare class MJAIModelVendorEntity extends BaseEntity<MJAIModelVendorEnt
30543
31365
  get Type(): string;
30544
31366
  }
30545
31367
  /**
30546
- * The per-modality model-configuration bag, stored as JSON in the `ModelConfiguration` column of
30547
- * THREE catalog entities — the same type at every level, forming an inherit-with-override cascade
30548
- * resolved base-first (deep-merged per key by `ResolveEffectiveModelConfiguration` in
30549
- * `@memberjunction/ai`):
31368
+ * The AI stack's per-modality configuration bags ONE source of truth for every layer.
31369
+ *
31370
+ * Two kinds of type live here, and the distinction is the whole point of the file:
31371
+ *
31372
+ * 1. **Shared modality sections** (`MJAIModelEntity_LLMConfigurationSettings`, `MJAIModelEntity_RealtimeConfigurationSettings`,
31373
+ * `MJAIModelEntity_VisionConfigurationSettings`, `MJAIModelEntity_AudioConfigurationSettings`) — what "the LLM configuration"
31374
+ * MEANS, defined once and reused by every layer that carries a configuration bag.
31375
+ * 2. **Per-table outer types** (`MJAIModelEntity_IAIModelConfiguration`, `MJAIModelEntity_IAIPromptConfiguration`,
31376
+ * `MJAIModelEntity_IAIPromptModelConfiguration`) — one per `JSONType`, so each table names its own type even
31377
+ * though they compose the same sections.
30550
31378
  *
30551
31379
  * ```
30552
31380
  * MJ: AI Model Types . ModelConfiguration (type-wide default — e.g. every Realtime model)
30553
31381
  * < MJ: AI Models . ModelConfiguration (per-model)
30554
31382
  * < MJ: AI Model Vendors . ModelConfiguration (per model-on-this-provider — the winner)
31383
+ *
31384
+ * MJ: AI Prompts . PromptConfiguration (per-prompt)
31385
+ * < MJ: AI Prompt Models . PromptConfiguration (per prompt-on-this-model — the winner)
30555
31386
  * ```
30556
31387
  *
30557
- * CodeGen emits a strongly-typed `ModelConfigurationObject` accessor on all three generated
30558
- * entities from this definition.
31388
+ * The catalog cascade is resolved base-first with per-key deep merge by
31389
+ * `ResolveEffectiveModelConfiguration` in `@memberjunction/ai`; the prompt cascade is resolved by
31390
+ * the prompt runner, which layers the prompt bags ON TOP of the catalog result.
31391
+ *
31392
+ * **Why one file**: `EntityField.JSONTypeDefinition` stores this text VERBATIM, and CodeGen emits
31393
+ * it inline above each entity class with every top-level name prefixed (`MJAIModelEntity_…`). It
31394
+ * therefore has to be self-contained — a definition cannot `import` a sibling, and `@file:`
31395
+ * substitutes a whole file rather than splicing one into another. Keeping every AI configuration
31396
+ * type in ONE file is what makes a shared section possible at all; the cost is that each of the
31397
+ * five entities emits the full (prefixed) set, including outer types it does not use.
30559
31398
  *
30560
31399
  * **Lockstep contract**: this file is the JSONType SOURCE; its package-side mirror is
30561
- * `AIModelConfiguration` in `@memberjunction/ai` (`packages/AI/Core/src/generic/modelConfiguration.ts`),
30562
- * which runtime code compiles against. Keep the two in step when adding a section or property —
30563
- * the same pact `IAgentSettings` follows with `@memberjunction/ai-core-plus`.
31400
+ * `packages/AI/Core/src/generic/modelConfiguration.ts` in `@memberjunction/ai`, which runtime code
31401
+ * compiles against. Keep the two in step when adding a section or property — the same pact
31402
+ * `IAgentSettings` follows with `@memberjunction/ai-core-plus`.
30564
31403
  *
30565
- * **Boundary rule**: anything the engine filters, sorts, or joins on stays a COLUMN
30566
- * (`PowerRank`, `IsActive`, `Priority`, `Status` — SQL cannot cheaply predicate into this bag);
30567
- * anything a driver consumes at session/call time belongs HERE. New capability knobs go in this
30568
- * bag do not add a new capability column per knob.
31404
+ * **Boundary rule**: anything the engine filters, sorts, or joins on stays a COLUMN (`PowerRank`,
31405
+ * `IsActive`, `Priority`, `Status` — SQL cannot cheaply predicate into this bag); anything a driver
31406
+ * or runner consumes at call time belongs HERE. New capability knobs go in the bag — do not add a
31407
+ * capability column per knob. A knob graduates to a real column when it needs a foreign key or
31408
+ * becomes a first-class thing the platform reasons about.
30569
31409
  */
30570
- export interface MJAIModelEntity_IAIModelConfiguration {
31410
+ /**
31411
+ * Text-generation knobs, consumed by the LLM drivers and the prompt runner at call time.
31412
+ *
31413
+ * Every flag is TRI-STATE (`boolean | null | absent`) and the three differ: the cascade REPLACES on
31414
+ * any explicit value (including `null`) and only skips a layer that OMITS the property. So absent
31415
+ * means "inherit", while an explicit value at a higher layer overrides a lower one even when false.
31416
+ *
31417
+ * Properties are marked with the layers that HONOR them. A property set at a layer that does not
31418
+ * honor it is inert, not an error — that tolerance is deliberate, so a knob can move between layers
31419
+ * without a schema change.
31420
+ */
31421
+ export interface MJAIModelEntity_LLMConfigurationSettings {
30571
31422
  /**
30572
- * Text-generation knobs. Reserved no consumers yet. Candidate contents: per-model
30573
- * effort-level defaults, response-format quirks, tool-calling behavior flags. Existing
30574
- * capability COLUMNS (`SupportsEffortLevel`, `SupportsStreaming`, …) are NOT migrating here —
30575
- * new knobs only.
31423
+ * **Catalog layers only** (model type / model / model vendor). Whether this model — or this
31424
+ * vendor's serving of it — supports native tool/function calling.
31425
+ *
31426
+ * CAPABILITY flag, and a hard gate: no policy or preference at any layer can force tools onto a
31427
+ * (model, vendor) whose resolved value is not true. Set `false` only for a model or serving path
31428
+ * verified NOT to support tools; leave absent when support is unknown, because absent is the
31429
+ * honest value and it inherits.
30576
31430
  */
30577
- LLM?: Record<string, unknown> | null;
30578
- /** Realtime (speech-to-speech) knobs — the first live section. */
30579
- Realtime?: {
30580
- /**
30581
- * Catalog-level turn-detection default for this model. Folded into the realtime session
30582
- * Config bag as the `turnDetection` key BELOW the agent/app config cascade
30583
- * (`realtime.session.turnDetection`) and the runtime override — the catalog supplies the
30584
- * default, agents/apps/callers refine it. Provider profiles translate the normalized
30585
- * vocabulary to their native wire block; an unsupported Mode is diag-logged and falls back
30586
- * to the profile default (never rejects a session).
30587
- */
30588
- TurnDetection?: {
30589
- /**
30590
- * - 'default' — let the provider profile decide (today's behavior).
30591
- * - 'serverVad' — classic silence-based server VAD.
30592
- * - 'semanticVad' semantic end-of-utterance detection (OpenAI `semantic_vad`).
30593
- * - 'native' this model's smartest documented turn/duplex mode, whatever the profile
30594
- * maps it to; the forward slot for full-duplex reasoning voice models (e.g. the
30595
- * Grok Voice Think Fast family).
30596
- */
30597
- Mode?: 'default' | 'serverVad' | 'semanticVad' | 'native' | null;
30598
- /** Semantic-VAD aggressiveness (OpenAI `eagerness`); ignored without a mapping. */
30599
- Eagerness?: 'low' | 'auto' | 'high' | null;
30600
- /** Server-VAD activation threshold (0–1); ignored without a mapping. */
30601
- Threshold?: number | null;
30602
- /** Server-VAD trailing-silence duration in ms; ignored without a mapping. */
30603
- SilenceDurationMs?: number | null;
30604
- } | null;
31431
+ SupportsNativeToolCalling?: boolean | null;
31432
+ /**
31433
+ * **Catalog layers only.** Whether prompts run against this model default to native tool calling
31434
+ * when they express no preference of their own. POLICY flag — subordinate to
31435
+ * {@link MJAIModelEntity_LLMConfigurationSettings.SupportsNativeToolCalling}.
31436
+ */
31437
+ DefaultToNativeToolCalling?: boolean | null;
31438
+ /**
31439
+ * **Prompt layers only** (prompt / prompt model). Whether THIS prompt asks for native tool
31440
+ * calling. PREFERENCE — it outranks the catalog's `DefaultToNativeToolCalling`, and is still
31441
+ * subordinate to the capability gate. Absent means "no preference; fall through to the model's
31442
+ * default".
31443
+ */
31444
+ UseNativeToolCalling?: boolean | null;
31445
+ /**
31446
+ * **Catalog layers only.** How control flow is expressed when a request resolves to native tool
31447
+ * calling. `'envelope'` (the default when absent) is the hybrid: Actions are tools, everything
31448
+ * else completion, chat, delegation, payload changes is the JSON envelope. `'implicit'` is the
31449
+ * implicit protocol: sub-agents, `payload_change_request` and `ask_user` are tools too, a tool call
31450
+ * continues the loop, and plain text with no call ends the turn as task completion. Consulted only
31451
+ * when the gate resolves native; subordinate to {@link MJAIModelEntity_LLMConfigurationSettings.SupportsNativeToolCalling}.
31452
+ */
31453
+ NativeControlFlow?: 'envelope' | 'implicit' | null;
31454
+ /**
31455
+ * **Catalog layers only.** Whether action results are returned to the model as native tool-result
31456
+ * turns instead of a markdown "Action results" user message. Absent means `false`. Consulted
31457
+ * only when the gate resolves native.
31458
+ */
31459
+ NativeToolResults?: boolean | null;
31460
+ }
31461
+ /**
31462
+ * MJ-normalized turn-detection settings for realtime (speech-to-speech) models. Every field is
31463
+ * optional; absent fields contribute nothing. Provider profiles translate this vocabulary to their
31464
+ * native wire block, and an unsupported value is diagnostic-logged and falls back to the profile
31465
+ * default — a wrong inherited value degrades safely, it never rejects a session.
31466
+ */
31467
+ export interface MJAIModelEntity_RealtimeTurnDetectionSettings {
31468
+ /**
31469
+ * - `'default'` — let the provider profile decide (today's behavior).
31470
+ * - `'serverVad'` — classic silence-based server VAD.
31471
+ * - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
31472
+ * - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
31473
+ * to; the forward slot for full-duplex reasoning voice models.
31474
+ */
31475
+ Mode?: 'default' | 'serverVad' | 'semanticVad' | 'native' | null;
31476
+ /** Semantic-VAD aggressiveness (OpenAI `eagerness`); ignored without a mapping. */
31477
+ Eagerness?: 'low' | 'auto' | 'high' | null;
31478
+ /** Server-VAD activation threshold (0–1); ignored without a mapping. */
31479
+ Threshold?: number | null;
31480
+ /** Server-VAD trailing-silence duration in ms; ignored without a mapping. */
31481
+ SilenceDurationMs?: number | null;
31482
+ }
31483
+ /**
31484
+ * Reasoning-plane settings for realtime models — dual delegation configuration. Absent defaults to
31485
+ * `'local'`.
31486
+ */
31487
+ export interface MJAIModelEntity_RealtimeReasoningSettings {
31488
+ /**
31489
+ * Which plane handles reasoning:
31490
+ * - `'local'` — application/agent loop (default).
31491
+ * - `'remote'` — delegated to remote model or hosted agent.
31492
+ */
31493
+ Plane?: 'local' | 'remote' | null;
31494
+ /** Remote reasoning target configuration. */
31495
+ Remote?: {
31496
+ Kind?: 'model' | 'hostedAgent' | null;
31497
+ Ref?: string | null;
31498
+ Effort?: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | null;
31499
+ MaxOutputTokens?: number | null;
30605
31500
  } | null;
31501
+ }
31502
+ /** Realtime (speech-to-speech) knobs. */
31503
+ export interface MJAIModelEntity_RealtimeConfigurationSettings {
31504
+ /**
31505
+ * Catalog-level turn-detection default for this model. Folded into the realtime session Config
31506
+ * bag as the `turnDetection` key BELOW the agent/app config cascade
31507
+ * (`realtime.session.turnDetection`) and the runtime override — the catalog supplies the
31508
+ * default, agents/apps/callers refine it.
31509
+ */
31510
+ TurnDetection?: MJAIModelEntity_RealtimeTurnDetectionSettings | null;
31511
+ /**
31512
+ * Reasoning plane settings — dual delegation configuration. Absent defaults to `'local'`.
31513
+ */
31514
+ Reasoning?: MJAIModelEntity_RealtimeReasoningSettings | null;
31515
+ }
31516
+ /** Vision knobs. Reserved — no consumers yet. */
31517
+ export interface MJAIModelEntity_VisionConfigurationSettings {
31518
+ [key: string]: unknown;
31519
+ }
31520
+ /** Audio (TTS/STT) knobs. Reserved — no consumers yet. */
31521
+ export interface MJAIModelEntity_AudioConfigurationSettings {
31522
+ [key: string]: unknown;
31523
+ }
31524
+ /**
31525
+ * The `ModelConfiguration` column on the three MODEL-CATALOG entities (`MJ: AI Model Types`,
31526
+ * `MJ: AI Models`, `MJ: AI Model Vendors`), which form an inherit-with-override cascade. Sections
31527
+ * are per-modality so one catalog row can configure everything its model does.
31528
+ */
31529
+ export interface MJAIModelEntity_IAIModelConfiguration {
31530
+ /** Text-generation knobs. Honors the catalog-layer properties. */
31531
+ LLM?: MJAIModelEntity_LLMConfigurationSettings | null;
31532
+ /** Realtime (speech-to-speech) knobs. */
31533
+ Realtime?: MJAIModelEntity_RealtimeConfigurationSettings | null;
30606
31534
  /** Vision knobs. Reserved. */
30607
- Vision?: Record<string, unknown> | null;
31535
+ Vision?: MJAIModelEntity_VisionConfigurationSettings | null;
30608
31536
  /** Audio (TTS/STT) knobs. Reserved. */
30609
- Audio?: Record<string, unknown> | null;
31537
+ Audio?: MJAIModelEntity_AudioConfigurationSettings | null;
31538
+ }
31539
+ /**
31540
+ * The `PromptConfiguration` column on `MJ: AI Prompts` — per-prompt call-time knobs, layered ON TOP of the
31541
+ * resolved model-catalog configuration by the prompt runner.
31542
+ *
31543
+ * The same anti-widening argument that produced `ModelConfiguration` applies here with more force:
31544
+ * `AIPrompt` already carries fifty-odd columns. New per-prompt call-time knobs land here.
31545
+ */
31546
+ export interface MJAIModelEntity_IAIPromptConfiguration {
31547
+ /** Text-generation knobs. Honors the prompt-layer properties. */
31548
+ LLM?: MJAIModelEntity_LLMConfigurationSettings | null;
31549
+ /** Realtime knobs. Reserved at this layer. */
31550
+ Realtime?: MJAIModelEntity_RealtimeConfigurationSettings | null;
31551
+ /** Vision knobs. Reserved. */
31552
+ Vision?: MJAIModelEntity_VisionConfigurationSettings | null;
31553
+ /** Audio knobs. Reserved. */
31554
+ Audio?: MJAIModelEntity_AudioConfigurationSettings | null;
31555
+ }
31556
+ /**
31557
+ * The `PromptConfiguration` column on `MJ: AI Prompt Models` — the most specific layer, overriding both
31558
+ * the prompt's own bag and the model catalog for this one (prompt, model) pairing.
31559
+ */
31560
+ export interface MJAIModelEntity_IAIPromptModelConfiguration {
31561
+ /** Text-generation knobs. Honors the prompt-layer properties. */
31562
+ LLM?: MJAIModelEntity_LLMConfigurationSettings | null;
31563
+ /** Realtime knobs. Reserved at this layer. */
31564
+ Realtime?: MJAIModelEntity_RealtimeConfigurationSettings | null;
31565
+ /** Vision knobs. Reserved. */
31566
+ Vision?: MJAIModelEntity_VisionConfigurationSettings | null;
31567
+ /** Audio knobs. Reserved. */
31568
+ Audio?: MJAIModelEntity_AudioConfigurationSettings | null;
30610
31569
  }
30611
31570
  /**
30612
31571
  * MJ: AI Models - strongly typed entity sub-class
@@ -30858,6 +31817,355 @@ export declare class MJAIModelEntity extends BaseEntity<MJAIModelEntityType> {
30858
31817
  get SupportsEffortLevel(): boolean | null;
30859
31818
  set SupportsEffortLevel(value: boolean | null);
30860
31819
  }
31820
+ /**
31821
+ * Provider-specific configuration JSON for a persona-to-vendor binding.
31822
+ *
31823
+ * Stored as JSON in `MJ: AI Persona Vendors.VendorSettings`. CodeGen emits a typed
31824
+ * `VendorSettingsObject` accessor on `MJAIPersonaVendorEntity` returning `MJAIPersonaVendorEntity_IAIPersonaVendorSettings | null`.
31825
+ *
31826
+ * Contains vendor-native voice/avatar tuning parameters (e.g., ElevenLabs voice settings)
31827
+ * moved out of generic base classes into their concrete vendor binding.
31828
+ */
31829
+ export interface MJAIPersonaVendorEntity_IAIPersonaVendorSettings {
31830
+ /** Vendor-native tuning, keyed by the vendor on AIPersonaVendor.VendorID.
31831
+ * Typed members are those common enough to be worth compile-time checking. */
31832
+ stability?: number;
31833
+ similarityBoost?: number;
31834
+ style?: number;
31835
+ useSpeakerBoost?: boolean;
31836
+ speed?: number;
31837
+ [key: string]: unknown;
31838
+ }
31839
+ /**
31840
+ * MJ: AI Persona Vendors - strongly typed entity sub-class
31841
+ * * Schema: __mj
31842
+ * * Base Table: AIPersonaVendor
31843
+ * * Base View: vwAIPersonaVendors
31844
+ * * @description Concrete vendor and modality binding for a persona, mapping the abstract persona to a provider-specific wire asset identifier (voice ID or avatar ID).
31845
+ * * Primary Key: ID
31846
+ * @extends {BaseEntity}
31847
+ * @class
31848
+ * @public
31849
+ */
31850
+ export declare class MJAIPersonaVendorEntity extends BaseEntity<MJAIPersonaVendorEntityType> {
31851
+ /**
31852
+ * Loads the MJ: AI Persona Vendors record from the database
31853
+ * @param ID: string - primary key value to load the MJ: AI Persona Vendors record.
31854
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
31855
+ * @returns {Promise<boolean>} - true if successful, false otherwise
31856
+ * @public
31857
+ * @async
31858
+ * @memberof MJAIPersonaVendorEntity
31859
+ * @method
31860
+ * @override
31861
+ */
31862
+ Load(ID: string, EntityRelationshipsToLoad?: string[]): Promise<boolean>;
31863
+ /**
31864
+ * * Field Name: ID
31865
+ * * Display Name: ID
31866
+ * * SQL Data Type: uniqueidentifier
31867
+ * * Default Value: newsequentialid()
31868
+ */
31869
+ get ID(): string;
31870
+ set ID(value: string);
31871
+ /**
31872
+ * * Field Name: PersonaID
31873
+ * * Display Name: Persona
31874
+ * * SQL Data Type: uniqueidentifier
31875
+ * * Related Entity/Foreign Key: MJ: AI Personas (vwAIPersonas.ID)
31876
+ */
31877
+ get PersonaID(): string;
31878
+ set PersonaID(value: string);
31879
+ /**
31880
+ * * Field Name: VendorID
31881
+ * * Display Name: Vendor
31882
+ * * SQL Data Type: uniqueidentifier
31883
+ * * Related Entity/Foreign Key: MJ: AI Vendors (vwAIVendors.ID)
31884
+ */
31885
+ get VendorID(): string;
31886
+ set VendorID(value: string);
31887
+ /**
31888
+ * * Field Name: ModalityID
31889
+ * * Display Name: Modality
31890
+ * * SQL Data Type: uniqueidentifier
31891
+ * * Related Entity/Foreign Key: MJ: AI Modalities (vwAIModalities.ID)
31892
+ */
31893
+ get ModalityID(): string;
31894
+ set ModalityID(value: string);
31895
+ /**
31896
+ * * Field Name: APIName
31897
+ * * Display Name: API Asset Name
31898
+ * * SQL Data Type: nvarchar(255)
31899
+ * * Description: Vendor-specific asset name or identifier passed over the wire (e.g., alloy, sage, an ElevenLabs voice_id, or a HeyGen avatar_id).
31900
+ */
31901
+ get APIName(): string;
31902
+ set APIName(value: string);
31903
+ /**
31904
+ * * Field Name: Status
31905
+ * * Display Name: Status
31906
+ * * SQL Data Type: nvarchar(20)
31907
+ * * Default Value: Active
31908
+ * * Value List Type: List
31909
+ * * Possible Values
31910
+ * * Active
31911
+ * * Deprecated
31912
+ * * Inactive
31913
+ * * Preview
31914
+ * * Description: Current operational status of this vendor persona binding.
31915
+ */
31916
+ get Status(): 'Active' | 'Deprecated' | 'Inactive' | 'Preview';
31917
+ set Status(value: 'Active' | 'Deprecated' | 'Inactive' | 'Preview');
31918
+ /**
31919
+ * * Field Name: Priority
31920
+ * * Display Name: Priority
31921
+ * * SQL Data Type: int
31922
+ * * Default Value: 0
31923
+ * * Description: Selection priority when multiple vendor bindings qualify for a given persona and modality. Higher numbers indicate higher priority.
31924
+ */
31925
+ get Priority(): number;
31926
+ set Priority(value: number);
31927
+ /**
31928
+ * * Field Name: VendorSettings
31929
+ * * Display Name: Vendor Settings
31930
+ * * SQL Data Type: nvarchar(MAX)
31931
+ * * JSON Type: MJAIPersonaVendorEntity_IAIPersonaVendorSettings
31932
+ * * Description: Provider-specific configuration JSON (e.g., ElevenLabs stability, similarityBoost, style, useSpeakerBoost).
31933
+ */
31934
+ get VendorSettings(): string | null;
31935
+ set VendorSettings(value: string | null);
31936
+ private _VendorSettingsObject_cached;
31937
+ private _VendorSettingsObject_lastRaw;
31938
+ /**
31939
+ * Typed accessor for VendorSettings — returns parsed JSON as MJAIPersonaVendorEntity_IAIPersonaVendorSettings.
31940
+ * Uses lazy parsing with cache invalidation when the underlying raw value changes.
31941
+ */
31942
+ get VendorSettingsObject(): MJAIPersonaVendorEntity_IAIPersonaVendorSettings | null;
31943
+ set VendorSettingsObject(value: MJAIPersonaVendorEntity_IAIPersonaVendorSettings | null);
31944
+ /**
31945
+ * * Field Name: __mj_CreatedAt
31946
+ * * Display Name: Created At
31947
+ * * SQL Data Type: datetimeoffset
31948
+ * * Default Value: getutcdate()
31949
+ */
31950
+ get __mj_CreatedAt(): Date;
31951
+ /**
31952
+ * * Field Name: __mj_UpdatedAt
31953
+ * * Display Name: Updated At
31954
+ * * SQL Data Type: datetimeoffset
31955
+ * * Default Value: getutcdate()
31956
+ */
31957
+ get __mj_UpdatedAt(): Date;
31958
+ /**
31959
+ * * Field Name: Persona
31960
+ * * Display Name: Persona Name
31961
+ * * SQL Data Type: nvarchar(100)
31962
+ */
31963
+ get Persona(): string;
31964
+ /**
31965
+ * * Field Name: Vendor
31966
+ * * Display Name: Vendor Name
31967
+ * * SQL Data Type: nvarchar(50)
31968
+ */
31969
+ get Vendor(): string;
31970
+ /**
31971
+ * * Field Name: Modality
31972
+ * * Display Name: Modality Name
31973
+ * * SQL Data Type: nvarchar(50)
31974
+ */
31975
+ get Modality(): string;
31976
+ }
31977
+ /**
31978
+ * Nuanced style and presentation descriptors for an AI Persona.
31979
+ *
31980
+ * Stored as JSON in `MJ: AI Personas.StyleDescriptors`. CodeGen emits a typed
31981
+ * `StyleDescriptorsObject` accessor on `MJAIPersonaEntity` returning `MJAIPersonaEntity_IAIPersonaStyleDescriptors | null`.
31982
+ *
31983
+ * Reserved extension point for fine-grained style descriptors (e.g. cadence, emphasis, prosody quirks)
31984
+ * beyond the primary Tone and SpeakingStyle scalar columns.
31985
+ */
31986
+ export interface MJAIPersonaEntity_IAIPersonaStyleDescriptors {
31987
+ /** Prose for GPT-Live's `Interruption policy:` prompt block (gpt-live-1.md §1). */
31988
+ interruptionPolicy?: string;
31989
+ /** Prose for GPT-Live's `Backchannel policy:` prompt block. */
31990
+ backchannelPolicy?: string;
31991
+ /** Open extension point for additional fine-grained style descriptors. */
31992
+ [key: string]: unknown;
31993
+ }
31994
+ /**
31995
+ * MJ: AI Personas - strongly typed entity sub-class
31996
+ * * Schema: __mj
31997
+ * * Base Table: AIPersona
31998
+ * * Base View: vwAIPersonas
31999
+ * * @description Abstract, provider-agnostic presentational identity (voice and/or visual appearance) that AI agents can assume when interacting with users.
32000
+ * * Primary Key: ID
32001
+ * @extends {BaseEntity}
32002
+ * @class
32003
+ * @public
32004
+ */
32005
+ export declare class MJAIPersonaEntity extends BaseEntity<MJAIPersonaEntityType> {
32006
+ /**
32007
+ * Loads the MJ: AI Personas record from the database
32008
+ * @param ID: string - primary key value to load the MJ: AI Personas record.
32009
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
32010
+ * @returns {Promise<boolean>} - true if successful, false otherwise
32011
+ * @public
32012
+ * @async
32013
+ * @memberof MJAIPersonaEntity
32014
+ * @method
32015
+ * @override
32016
+ */
32017
+ Load(ID: string, EntityRelationshipsToLoad?: string[]): Promise<boolean>;
32018
+ /**
32019
+ * * Field Name: ID
32020
+ * * Display Name: ID
32021
+ * * SQL Data Type: uniqueidentifier
32022
+ * * Default Value: newsequentialid()
32023
+ */
32024
+ get ID(): string;
32025
+ set ID(value: string);
32026
+ /**
32027
+ * * Field Name: Name
32028
+ * * Display Name: Persona Name
32029
+ * * SQL Data Type: nvarchar(100)
32030
+ * * Description: Unique display name identifying this persona (e.g., Alloy, Aria, Sage). Globally unique across all sources to maintain deterministic cross-modality catalog curation.
32031
+ */
32032
+ get Name(): string;
32033
+ set Name(value: string);
32034
+ /**
32035
+ * * Field Name: Description
32036
+ * * Display Name: Description
32037
+ * * SQL Data Type: nvarchar(MAX)
32038
+ * * Description: Optional description of the persona, its characteristics, and intended personality.
32039
+ */
32040
+ get Description(): string | null;
32041
+ set Description(value: string | null);
32042
+ /**
32043
+ * * Field Name: PerceivedGender
32044
+ * * Display Name: Perceived Gender
32045
+ * * SQL Data Type: nvarchar(50)
32046
+ * * Description: The perceived gender presentation of this persona (e.g., Male, Female, Neutral, Non-Binary).
32047
+ */
32048
+ get PerceivedGender(): string | null;
32049
+ set PerceivedGender(value: string | null);
32050
+ /**
32051
+ * * Field Name: Locale
32052
+ * * Display Name: Locale
32053
+ * * SQL Data Type: nvarchar(20)
32054
+ * * Description: BCP 47 language and locale tag primarily associated with this persona (e.g., en-US, es-ES).
32055
+ */
32056
+ get Locale(): string | null;
32057
+ set Locale(value: string | null);
32058
+ /**
32059
+ * * Field Name: PerceivedAgeRangeMin
32060
+ * * Display Name: Perceived Age Range Min
32061
+ * * SQL Data Type: int
32062
+ * * Description: Approximate minimum perceived age for this persona, enabling numerical filtering.
32063
+ */
32064
+ get PerceivedAgeRangeMin(): number | null;
32065
+ set PerceivedAgeRangeMin(value: number | null);
32066
+ /**
32067
+ * * Field Name: PerceivedAgeRangeMax
32068
+ * * Display Name: Perceived Age Range Max
32069
+ * * SQL Data Type: int
32070
+ * * Description: Approximate maximum perceived age for this persona, enabling numerical filtering.
32071
+ */
32072
+ get PerceivedAgeRangeMax(): number | null;
32073
+ set PerceivedAgeRangeMax(value: number | null);
32074
+ /**
32075
+ * * Field Name: Tone
32076
+ * * Display Name: Tone
32077
+ * * SQL Data Type: nvarchar(255)
32078
+ * * Description: Core tonal quality for this persona (e.g., Warm, Authoritative, Enthusiastic, Calm). Injected into prompt context for conversational delivery.
32079
+ */
32080
+ get Tone(): string | null;
32081
+ set Tone(value: string | null);
32082
+ /**
32083
+ * * Field Name: SpeakingStyle
32084
+ * * Display Name: Speaking Style
32085
+ * * SQL Data Type: nvarchar(255)
32086
+ * * Description: Stylistic manner of speaking (e.g., Casual and conversational, Direct and concise, Academic).
32087
+ */
32088
+ get SpeakingStyle(): string | null;
32089
+ set SpeakingStyle(value: string | null);
32090
+ /**
32091
+ * * Field Name: StyleDescriptors
32092
+ * * Display Name: Style Descriptors
32093
+ * * SQL Data Type: nvarchar(MAX)
32094
+ * * JSON Type: MJAIPersonaEntity_IAIPersonaStyleDescriptors
32095
+ * * Description: Additional descriptive keywords or JSON metadata capturing nuanced personality and presentation traits.
32096
+ */
32097
+ get StyleDescriptors(): string | null;
32098
+ set StyleDescriptors(value: string | null);
32099
+ private _StyleDescriptorsObject_cached;
32100
+ private _StyleDescriptorsObject_lastRaw;
32101
+ /**
32102
+ * Typed accessor for StyleDescriptors — returns parsed JSON as MJAIPersonaEntity_IAIPersonaStyleDescriptors.
32103
+ * Uses lazy parsing with cache invalidation when the underlying raw value changes.
32104
+ */
32105
+ get StyleDescriptorsObject(): MJAIPersonaEntity_IAIPersonaStyleDescriptors | null;
32106
+ set StyleDescriptorsObject(value: MJAIPersonaEntity_IAIPersonaStyleDescriptors | null);
32107
+ /**
32108
+ * * Field Name: PreviewAudioURL
32109
+ * * Display Name: Preview Audio URL
32110
+ * * SQL Data Type: nvarchar(1000)
32111
+ * * Description: URL to a sample audio file demonstrating this persona's voice.
32112
+ */
32113
+ get PreviewAudioURL(): string | null;
32114
+ set PreviewAudioURL(value: string | null);
32115
+ /**
32116
+ * * Field Name: PreviewImageURL
32117
+ * * Display Name: Preview Image URL
32118
+ * * SQL Data Type: nvarchar(1000)
32119
+ * * Description: URL to a preview avatar image for this persona.
32120
+ */
32121
+ get PreviewImageURL(): string | null;
32122
+ set PreviewImageURL(value: string | null);
32123
+ /**
32124
+ * * Field Name: PreviewVideoURL
32125
+ * * Display Name: Preview Video URL
32126
+ * * SQL Data Type: nvarchar(1000)
32127
+ * * Description: URL to a preview video demonstrating this persona's visual animation or avatar.
32128
+ */
32129
+ get PreviewVideoURL(): string | null;
32130
+ set PreviewVideoURL(value: string | null);
32131
+ /**
32132
+ * * Field Name: Source
32133
+ * * Display Name: Source
32134
+ * * SQL Data Type: nvarchar(20)
32135
+ * * Default Value: BuiltIn
32136
+ * * Value List Type: List
32137
+ * * Possible Values
32138
+ * * BuiltIn
32139
+ * * Cloned
32140
+ * * Custom
32141
+ * * Description: Origin of this persona: BuiltIn (provided by system/catalog), Custom (user-defined), or Cloned (derived/voice-cloned).
32142
+ */
32143
+ get Source(): 'BuiltIn' | 'Cloned' | 'Custom';
32144
+ set Source(value: 'BuiltIn' | 'Cloned' | 'Custom');
32145
+ /**
32146
+ * * Field Name: IsActive
32147
+ * * Display Name: Is Active
32148
+ * * SQL Data Type: bit
32149
+ * * Default Value: 1
32150
+ * * Description: Whether this persona is currently active and available for selection.
32151
+ */
32152
+ get IsActive(): boolean;
32153
+ set IsActive(value: boolean);
32154
+ /**
32155
+ * * Field Name: __mj_CreatedAt
32156
+ * * Display Name: Created At
32157
+ * * SQL Data Type: datetimeoffset
32158
+ * * Default Value: getutcdate()
32159
+ */
32160
+ get __mj_CreatedAt(): Date;
32161
+ /**
32162
+ * * Field Name: __mj_UpdatedAt
32163
+ * * Display Name: Updated At
32164
+ * * SQL Data Type: datetimeoffset
32165
+ * * Default Value: getutcdate()
32166
+ */
32167
+ get __mj_UpdatedAt(): Date;
32168
+ }
30861
32169
  /**
30862
32170
  * MJ: AI Prompt Categories - strongly typed entity sub-class
30863
32171
  * * Schema: __mj
@@ -30964,6 +32272,209 @@ export declare class MJAIPromptCategoryEntity extends BaseEntity<MJAIPromptCateg
30964
32272
  */
30965
32273
  get ParentIDChildCount(): number | null;
30966
32274
  }
32275
+ /**
32276
+ * The AI stack's per-modality configuration bags — ONE source of truth for every layer.
32277
+ *
32278
+ * Two kinds of type live here, and the distinction is the whole point of the file:
32279
+ *
32280
+ * 1. **Shared modality sections** (`MJAIPromptModelEntity_LLMConfigurationSettings`, `MJAIPromptModelEntity_RealtimeConfigurationSettings`,
32281
+ * `MJAIPromptModelEntity_VisionConfigurationSettings`, `MJAIPromptModelEntity_AudioConfigurationSettings`) — what "the LLM configuration"
32282
+ * MEANS, defined once and reused by every layer that carries a configuration bag.
32283
+ * 2. **Per-table outer types** (`MJAIPromptModelEntity_IAIModelConfiguration`, `MJAIPromptModelEntity_IAIPromptConfiguration`,
32284
+ * `MJAIPromptModelEntity_IAIPromptModelConfiguration`) — one per `JSONType`, so each table names its own type even
32285
+ * though they compose the same sections.
32286
+ *
32287
+ * ```
32288
+ * MJ: AI Model Types . ModelConfiguration (type-wide default — e.g. every Realtime model)
32289
+ * < MJ: AI Models . ModelConfiguration (per-model)
32290
+ * < MJ: AI Model Vendors . ModelConfiguration (per model-on-this-provider — the winner)
32291
+ *
32292
+ * MJ: AI Prompts . PromptConfiguration (per-prompt)
32293
+ * < MJ: AI Prompt Models . PromptConfiguration (per prompt-on-this-model — the winner)
32294
+ * ```
32295
+ *
32296
+ * The catalog cascade is resolved base-first with per-key deep merge by
32297
+ * `ResolveEffectiveModelConfiguration` in `@memberjunction/ai`; the prompt cascade is resolved by
32298
+ * the prompt runner, which layers the prompt bags ON TOP of the catalog result.
32299
+ *
32300
+ * **Why one file**: `EntityField.JSONTypeDefinition` stores this text VERBATIM, and CodeGen emits
32301
+ * it inline above each entity class with every top-level name prefixed (`MJAIModelEntity_…`). It
32302
+ * therefore has to be self-contained — a definition cannot `import` a sibling, and `@file:`
32303
+ * substitutes a whole file rather than splicing one into another. Keeping every AI configuration
32304
+ * type in ONE file is what makes a shared section possible at all; the cost is that each of the
32305
+ * five entities emits the full (prefixed) set, including outer types it does not use.
32306
+ *
32307
+ * **Lockstep contract**: this file is the JSONType SOURCE; its package-side mirror is
32308
+ * `packages/AI/Core/src/generic/modelConfiguration.ts` in `@memberjunction/ai`, which runtime code
32309
+ * compiles against. Keep the two in step when adding a section or property — the same pact
32310
+ * `IAgentSettings` follows with `@memberjunction/ai-core-plus`.
32311
+ *
32312
+ * **Boundary rule**: anything the engine filters, sorts, or joins on stays a COLUMN (`PowerRank`,
32313
+ * `IsActive`, `Priority`, `Status` — SQL cannot cheaply predicate into this bag); anything a driver
32314
+ * or runner consumes at call time belongs HERE. New capability knobs go in the bag — do not add a
32315
+ * capability column per knob. A knob graduates to a real column when it needs a foreign key or
32316
+ * becomes a first-class thing the platform reasons about.
32317
+ */
32318
+ /**
32319
+ * Text-generation knobs, consumed by the LLM drivers and the prompt runner at call time.
32320
+ *
32321
+ * Every flag is TRI-STATE (`boolean | null | absent`) and the three differ: the cascade REPLACES on
32322
+ * any explicit value (including `null`) and only skips a layer that OMITS the property. So absent
32323
+ * means "inherit", while an explicit value at a higher layer overrides a lower one even when false.
32324
+ *
32325
+ * Properties are marked with the layers that HONOR them. A property set at a layer that does not
32326
+ * honor it is inert, not an error — that tolerance is deliberate, so a knob can move between layers
32327
+ * without a schema change.
32328
+ */
32329
+ export interface MJAIPromptModelEntity_LLMConfigurationSettings {
32330
+ /**
32331
+ * **Catalog layers only** (model type / model / model vendor). Whether this model — or this
32332
+ * vendor's serving of it — supports native tool/function calling.
32333
+ *
32334
+ * CAPABILITY flag, and a hard gate: no policy or preference at any layer can force tools onto a
32335
+ * (model, vendor) whose resolved value is not true. Set `false` only for a model or serving path
32336
+ * verified NOT to support tools; leave absent when support is unknown, because absent is the
32337
+ * honest value and it inherits.
32338
+ */
32339
+ SupportsNativeToolCalling?: boolean | null;
32340
+ /**
32341
+ * **Catalog layers only.** Whether prompts run against this model default to native tool calling
32342
+ * when they express no preference of their own. POLICY flag — subordinate to
32343
+ * {@link MJAIPromptModelEntity_LLMConfigurationSettings.SupportsNativeToolCalling}.
32344
+ */
32345
+ DefaultToNativeToolCalling?: boolean | null;
32346
+ /**
32347
+ * **Prompt layers only** (prompt / prompt model). Whether THIS prompt asks for native tool
32348
+ * calling. PREFERENCE — it outranks the catalog's `DefaultToNativeToolCalling`, and is still
32349
+ * subordinate to the capability gate. Absent means "no preference; fall through to the model's
32350
+ * default".
32351
+ */
32352
+ UseNativeToolCalling?: boolean | null;
32353
+ /**
32354
+ * **Catalog layers only.** How control flow is expressed when a request resolves to native tool
32355
+ * calling. `'envelope'` (the default when absent) is the hybrid: Actions are tools, everything
32356
+ * else — completion, chat, delegation, payload changes — is the JSON envelope. `'implicit'` is the
32357
+ * implicit protocol: sub-agents, `payload_change_request` and `ask_user` are tools too, a tool call
32358
+ * continues the loop, and plain text with no call ends the turn as task completion. Consulted only
32359
+ * when the gate resolves native; subordinate to {@link MJAIPromptModelEntity_LLMConfigurationSettings.SupportsNativeToolCalling}.
32360
+ */
32361
+ NativeControlFlow?: 'envelope' | 'implicit' | null;
32362
+ /**
32363
+ * **Catalog layers only.** Whether action results are returned to the model as native tool-result
32364
+ * turns instead of a markdown "Action results" user message. Absent means `false`. Consulted
32365
+ * only when the gate resolves native.
32366
+ */
32367
+ NativeToolResults?: boolean | null;
32368
+ }
32369
+ /**
32370
+ * MJ-normalized turn-detection settings for realtime (speech-to-speech) models. Every field is
32371
+ * optional; absent fields contribute nothing. Provider profiles translate this vocabulary to their
32372
+ * native wire block, and an unsupported value is diagnostic-logged and falls back to the profile
32373
+ * default — a wrong inherited value degrades safely, it never rejects a session.
32374
+ */
32375
+ export interface MJAIPromptModelEntity_RealtimeTurnDetectionSettings {
32376
+ /**
32377
+ * - `'default'` — let the provider profile decide (today's behavior).
32378
+ * - `'serverVad'` — classic silence-based server VAD.
32379
+ * - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
32380
+ * - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
32381
+ * to; the forward slot for full-duplex reasoning voice models.
32382
+ */
32383
+ Mode?: 'default' | 'serverVad' | 'semanticVad' | 'native' | null;
32384
+ /** Semantic-VAD aggressiveness (OpenAI `eagerness`); ignored without a mapping. */
32385
+ Eagerness?: 'low' | 'auto' | 'high' | null;
32386
+ /** Server-VAD activation threshold (0–1); ignored without a mapping. */
32387
+ Threshold?: number | null;
32388
+ /** Server-VAD trailing-silence duration in ms; ignored without a mapping. */
32389
+ SilenceDurationMs?: number | null;
32390
+ }
32391
+ /**
32392
+ * Reasoning-plane settings for realtime models — dual delegation configuration. Absent defaults to
32393
+ * `'local'`.
32394
+ */
32395
+ export interface MJAIPromptModelEntity_RealtimeReasoningSettings {
32396
+ /**
32397
+ * Which plane handles reasoning:
32398
+ * - `'local'` — application/agent loop (default).
32399
+ * - `'remote'` — delegated to remote model or hosted agent.
32400
+ */
32401
+ Plane?: 'local' | 'remote' | null;
32402
+ /** Remote reasoning target configuration. */
32403
+ Remote?: {
32404
+ Kind?: 'model' | 'hostedAgent' | null;
32405
+ Ref?: string | null;
32406
+ Effort?: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | null;
32407
+ MaxOutputTokens?: number | null;
32408
+ } | null;
32409
+ }
32410
+ /** Realtime (speech-to-speech) knobs. */
32411
+ export interface MJAIPromptModelEntity_RealtimeConfigurationSettings {
32412
+ /**
32413
+ * Catalog-level turn-detection default for this model. Folded into the realtime session Config
32414
+ * bag as the `turnDetection` key BELOW the agent/app config cascade
32415
+ * (`realtime.session.turnDetection`) and the runtime override — the catalog supplies the
32416
+ * default, agents/apps/callers refine it.
32417
+ */
32418
+ TurnDetection?: MJAIPromptModelEntity_RealtimeTurnDetectionSettings | null;
32419
+ /**
32420
+ * Reasoning plane settings — dual delegation configuration. Absent defaults to `'local'`.
32421
+ */
32422
+ Reasoning?: MJAIPromptModelEntity_RealtimeReasoningSettings | null;
32423
+ }
32424
+ /** Vision knobs. Reserved — no consumers yet. */
32425
+ export interface MJAIPromptModelEntity_VisionConfigurationSettings {
32426
+ [key: string]: unknown;
32427
+ }
32428
+ /** Audio (TTS/STT) knobs. Reserved — no consumers yet. */
32429
+ export interface MJAIPromptModelEntity_AudioConfigurationSettings {
32430
+ [key: string]: unknown;
32431
+ }
32432
+ /**
32433
+ * The `ModelConfiguration` column on the three MODEL-CATALOG entities (`MJ: AI Model Types`,
32434
+ * `MJ: AI Models`, `MJ: AI Model Vendors`), which form an inherit-with-override cascade. Sections
32435
+ * are per-modality so one catalog row can configure everything its model does.
32436
+ */
32437
+ export interface MJAIPromptModelEntity_IAIModelConfiguration {
32438
+ /** Text-generation knobs. Honors the catalog-layer properties. */
32439
+ LLM?: MJAIPromptModelEntity_LLMConfigurationSettings | null;
32440
+ /** Realtime (speech-to-speech) knobs. */
32441
+ Realtime?: MJAIPromptModelEntity_RealtimeConfigurationSettings | null;
32442
+ /** Vision knobs. Reserved. */
32443
+ Vision?: MJAIPromptModelEntity_VisionConfigurationSettings | null;
32444
+ /** Audio (TTS/STT) knobs. Reserved. */
32445
+ Audio?: MJAIPromptModelEntity_AudioConfigurationSettings | null;
32446
+ }
32447
+ /**
32448
+ * The `PromptConfiguration` column on `MJ: AI Prompts` — per-prompt call-time knobs, layered ON TOP of the
32449
+ * resolved model-catalog configuration by the prompt runner.
32450
+ *
32451
+ * The same anti-widening argument that produced `ModelConfiguration` applies here with more force:
32452
+ * `AIPrompt` already carries fifty-odd columns. New per-prompt call-time knobs land here.
32453
+ */
32454
+ export interface MJAIPromptModelEntity_IAIPromptConfiguration {
32455
+ /** Text-generation knobs. Honors the prompt-layer properties. */
32456
+ LLM?: MJAIPromptModelEntity_LLMConfigurationSettings | null;
32457
+ /** Realtime knobs. Reserved at this layer. */
32458
+ Realtime?: MJAIPromptModelEntity_RealtimeConfigurationSettings | null;
32459
+ /** Vision knobs. Reserved. */
32460
+ Vision?: MJAIPromptModelEntity_VisionConfigurationSettings | null;
32461
+ /** Audio knobs. Reserved. */
32462
+ Audio?: MJAIPromptModelEntity_AudioConfigurationSettings | null;
32463
+ }
32464
+ /**
32465
+ * The `PromptConfiguration` column on `MJ: AI Prompt Models` — the most specific layer, overriding both
32466
+ * the prompt's own bag and the model catalog for this one (prompt, model) pairing.
32467
+ */
32468
+ export interface MJAIPromptModelEntity_IAIPromptModelConfiguration {
32469
+ /** Text-generation knobs. Honors the prompt-layer properties. */
32470
+ LLM?: MJAIPromptModelEntity_LLMConfigurationSettings | null;
32471
+ /** Realtime knobs. Reserved at this layer. */
32472
+ Realtime?: MJAIPromptModelEntity_RealtimeConfigurationSettings | null;
32473
+ /** Vision knobs. Reserved. */
32474
+ Vision?: MJAIPromptModelEntity_VisionConfigurationSettings | null;
32475
+ /** Audio knobs. Reserved. */
32476
+ Audio?: MJAIPromptModelEntity_AudioConfigurationSettings | null;
32477
+ }
30967
32478
  /**
30968
32479
  * MJ: AI Prompt Models - strongly typed entity sub-class
30969
32480
  * * Schema: __mj
@@ -31174,6 +32685,23 @@ export declare class MJAIPromptModelEntity extends BaseEntity<MJAIPromptModelEnt
31174
32685
  get EffortLevel(): number | null;
31175
32686
  set EffortLevel(value: number | null);
31176
32687
  /**
32688
+ * * Field Name: PromptConfiguration
32689
+ * * Display Name: Prompt Configuration
32690
+ * * SQL Data Type: nvarchar(MAX)
32691
+ * * JSON Type: MJAIPromptModelEntity_IAIPromptModelConfiguration
32692
+ * * Description: Most-specific layer of the prompt configuration bag (JSON, IAIPromptModelConfiguration shape) — configuration for THIS prompt on THIS model. Deep-merges per key over the AIPrompt layer, which in turn sits above the model-catalog ModelConfiguration cascade. NULL = inherit the merged configuration unchanged.
32693
+ */
32694
+ get PromptConfiguration(): string | null;
32695
+ set PromptConfiguration(value: string | null);
32696
+ private _PromptConfigurationObject_cached;
32697
+ private _PromptConfigurationObject_lastRaw;
32698
+ /**
32699
+ * Typed accessor for PromptConfiguration — returns parsed JSON as MJAIPromptModelEntity_IAIPromptModelConfiguration.
32700
+ * Uses lazy parsing with cache invalidation when the underlying raw value changes.
32701
+ */
32702
+ get PromptConfigurationObject(): MJAIPromptModelEntity_IAIPromptModelConfiguration | null;
32703
+ set PromptConfigurationObject(value: MJAIPromptModelEntity_IAIPromptModelConfiguration | null);
32704
+ /**
31177
32705
  * * Field Name: Prompt
31178
32706
  * * Display Name: Prompt
31179
32707
  * * SQL Data Type: nvarchar(255)
@@ -31402,6 +32930,8 @@ export declare class MJAIPromptRunEntity extends BaseEntity<MJAIPromptRunEntityT
31402
32930
  /**
31403
32931
  * Validate() method override for MJ: AI Prompt Runs entity. This is an auto-generated method that invokes the generated validators for this entity for the following fields:
31404
32932
  * * EffortLevel: This rule ensures that if an effort level is provided, it must be between 1 and 100, inclusive.
32933
+ * * InputUnitsUsed: Input units used must be greater than or equal to zero to ensure usage is not recorded as a negative value.
32934
+ * * OutputUnitsUsed: The number of output units used cannot be negative, ensuring accurate tracking of resource usage.
31405
32935
  * * Table-Level: This rule ensures that if the 'CompletedAt' date is provided, it must be the same as or later than the 'RunAt' date. If 'CompletedAt' is not specified, there is no restriction.
31406
32936
  * * Table-Level: This rule ensures that if either the number of prompt tokens or completion tokens is missing, or the total tokens used is missing, the check passes automatically. However, if all three are provided, then the total tokens used must exactly equal the sum of prompt tokens and completion tokens.
31407
32937
  * @public
@@ -31417,6 +32947,20 @@ export declare class MJAIPromptRunEntity extends BaseEntity<MJAIPromptRunEntityT
31417
32947
  */
31418
32948
  ValidateEffortLevelIsBetween1And100(result: ValidationResult): void;
31419
32949
  /**
32950
+ * Input units used must be greater than or equal to zero to ensure usage is not recorded as a negative value.
32951
+ * @param result - the ValidationResult object to add any errors or warnings to
32952
+ * @public
32953
+ * @method
32954
+ */
32955
+ ValidateInputUnitsUsedGreaterThanOrEqualToZero(result: ValidationResult): void;
32956
+ /**
32957
+ * The number of output units used cannot be negative, ensuring accurate tracking of resource usage.
32958
+ * @param result - the ValidationResult object to add any errors or warnings to
32959
+ * @public
32960
+ * @method
32961
+ */
32962
+ ValidateOutputUnitsUsedGreaterThanOrEqualToZero(result: ValidationResult): void;
32963
+ /**
31420
32964
  * This rule ensures that if the 'CompletedAt' date is provided, it must be the same as or later than the 'RunAt' date. If 'CompletedAt' is not specified, there is no restriction.
31421
32965
  * @param result - the ValidationResult object to add any errors or warnings to
31422
32966
  * @public
@@ -32196,6 +33740,20 @@ export declare class MJAIPromptRunEntity extends BaseEntity<MJAIPromptRunEntityT
32196
33740
  get UsageTypeID(): string | null;
32197
33741
  set UsageTypeID(value: string | null);
32198
33742
  /**
33743
+ * * Field Name: ToolCallingMode
33744
+ * * Display Name: Tool Calling Mode
33745
+ * * SQL Data Type: nvarchar(25)
33746
+ * * Value List Type: List
33747
+ * * Possible Values
33748
+ * * Envelope
33749
+ * * Native
33750
+ * * NativeFallback
33751
+ * * NativeImplicit
33752
+ * * Description: Which tool-calling path this run actually took. 'Native' = Actions declared as tools, control flow in the JSON envelope (the hybrid). 'NativeImplicit' = Actions, sub-agents, payload_change_request and ask_user declared as tools; a tool call continues the loop and plain text ends the turn. 'Envelope' = no tools declared — the vendor-agnostic JSON-envelope path, including a prompt that asked for native mode on a model/vendor without the capability (also logs a warning). 'NativeFallback' = a native attempt failed in a tools-specific way and completed via a single envelope retry. NULL = pre-feature rows or a run that never reached a model call.
33753
+ */
33754
+ get ToolCallingMode(): 'Envelope' | 'Native' | 'NativeFallback' | 'NativeImplicit' | null;
33755
+ set ToolCallingMode(value: 'Envelope' | 'Native' | 'NativeFallback' | 'NativeImplicit' | null);
33756
+ /**
32199
33757
  * * Field Name: Prompt
32200
33758
  * * Display Name: Prompt
32201
33759
  * * SQL Data Type: nvarchar(255)
@@ -32359,6 +33917,209 @@ export declare class MJAIPromptTypeEntity extends BaseEntity<MJAIPromptTypeEntit
32359
33917
  */
32360
33918
  get __mj_UpdatedAt(): Date;
32361
33919
  }
33920
+ /**
33921
+ * The AI stack's per-modality configuration bags — ONE source of truth for every layer.
33922
+ *
33923
+ * Two kinds of type live here, and the distinction is the whole point of the file:
33924
+ *
33925
+ * 1. **Shared modality sections** (`MJAIPromptEntity_LLMConfigurationSettings`, `MJAIPromptEntity_RealtimeConfigurationSettings`,
33926
+ * `MJAIPromptEntity_VisionConfigurationSettings`, `MJAIPromptEntity_AudioConfigurationSettings`) — what "the LLM configuration"
33927
+ * MEANS, defined once and reused by every layer that carries a configuration bag.
33928
+ * 2. **Per-table outer types** (`MJAIPromptEntity_IAIModelConfiguration`, `MJAIPromptEntity_IAIPromptConfiguration`,
33929
+ * `MJAIPromptEntity_IAIPromptModelConfiguration`) — one per `JSONType`, so each table names its own type even
33930
+ * though they compose the same sections.
33931
+ *
33932
+ * ```
33933
+ * MJ: AI Model Types . ModelConfiguration (type-wide default — e.g. every Realtime model)
33934
+ * < MJ: AI Models . ModelConfiguration (per-model)
33935
+ * < MJ: AI Model Vendors . ModelConfiguration (per model-on-this-provider — the winner)
33936
+ *
33937
+ * MJ: AI Prompts . PromptConfiguration (per-prompt)
33938
+ * < MJ: AI Prompt Models . PromptConfiguration (per prompt-on-this-model — the winner)
33939
+ * ```
33940
+ *
33941
+ * The catalog cascade is resolved base-first with per-key deep merge by
33942
+ * `ResolveEffectiveModelConfiguration` in `@memberjunction/ai`; the prompt cascade is resolved by
33943
+ * the prompt runner, which layers the prompt bags ON TOP of the catalog result.
33944
+ *
33945
+ * **Why one file**: `EntityField.JSONTypeDefinition` stores this text VERBATIM, and CodeGen emits
33946
+ * it inline above each entity class with every top-level name prefixed (`MJAIModelEntity_…`). It
33947
+ * therefore has to be self-contained — a definition cannot `import` a sibling, and `@file:`
33948
+ * substitutes a whole file rather than splicing one into another. Keeping every AI configuration
33949
+ * type in ONE file is what makes a shared section possible at all; the cost is that each of the
33950
+ * five entities emits the full (prefixed) set, including outer types it does not use.
33951
+ *
33952
+ * **Lockstep contract**: this file is the JSONType SOURCE; its package-side mirror is
33953
+ * `packages/AI/Core/src/generic/modelConfiguration.ts` in `@memberjunction/ai`, which runtime code
33954
+ * compiles against. Keep the two in step when adding a section or property — the same pact
33955
+ * `IAgentSettings` follows with `@memberjunction/ai-core-plus`.
33956
+ *
33957
+ * **Boundary rule**: anything the engine filters, sorts, or joins on stays a COLUMN (`PowerRank`,
33958
+ * `IsActive`, `Priority`, `Status` — SQL cannot cheaply predicate into this bag); anything a driver
33959
+ * or runner consumes at call time belongs HERE. New capability knobs go in the bag — do not add a
33960
+ * capability column per knob. A knob graduates to a real column when it needs a foreign key or
33961
+ * becomes a first-class thing the platform reasons about.
33962
+ */
33963
+ /**
33964
+ * Text-generation knobs, consumed by the LLM drivers and the prompt runner at call time.
33965
+ *
33966
+ * Every flag is TRI-STATE (`boolean | null | absent`) and the three differ: the cascade REPLACES on
33967
+ * any explicit value (including `null`) and only skips a layer that OMITS the property. So absent
33968
+ * means "inherit", while an explicit value at a higher layer overrides a lower one even when false.
33969
+ *
33970
+ * Properties are marked with the layers that HONOR them. A property set at a layer that does not
33971
+ * honor it is inert, not an error — that tolerance is deliberate, so a knob can move between layers
33972
+ * without a schema change.
33973
+ */
33974
+ export interface MJAIPromptEntity_LLMConfigurationSettings {
33975
+ /**
33976
+ * **Catalog layers only** (model type / model / model vendor). Whether this model — or this
33977
+ * vendor's serving of it — supports native tool/function calling.
33978
+ *
33979
+ * CAPABILITY flag, and a hard gate: no policy or preference at any layer can force tools onto a
33980
+ * (model, vendor) whose resolved value is not true. Set `false` only for a model or serving path
33981
+ * verified NOT to support tools; leave absent when support is unknown, because absent is the
33982
+ * honest value and it inherits.
33983
+ */
33984
+ SupportsNativeToolCalling?: boolean | null;
33985
+ /**
33986
+ * **Catalog layers only.** Whether prompts run against this model default to native tool calling
33987
+ * when they express no preference of their own. POLICY flag — subordinate to
33988
+ * {@link MJAIPromptEntity_LLMConfigurationSettings.SupportsNativeToolCalling}.
33989
+ */
33990
+ DefaultToNativeToolCalling?: boolean | null;
33991
+ /**
33992
+ * **Prompt layers only** (prompt / prompt model). Whether THIS prompt asks for native tool
33993
+ * calling. PREFERENCE — it outranks the catalog's `DefaultToNativeToolCalling`, and is still
33994
+ * subordinate to the capability gate. Absent means "no preference; fall through to the model's
33995
+ * default".
33996
+ */
33997
+ UseNativeToolCalling?: boolean | null;
33998
+ /**
33999
+ * **Catalog layers only.** How control flow is expressed when a request resolves to native tool
34000
+ * calling. `'envelope'` (the default when absent) is the hybrid: Actions are tools, everything
34001
+ * else — completion, chat, delegation, payload changes — is the JSON envelope. `'implicit'` is the
34002
+ * implicit protocol: sub-agents, `payload_change_request` and `ask_user` are tools too, a tool call
34003
+ * continues the loop, and plain text with no call ends the turn as task completion. Consulted only
34004
+ * when the gate resolves native; subordinate to {@link MJAIPromptEntity_LLMConfigurationSettings.SupportsNativeToolCalling}.
34005
+ */
34006
+ NativeControlFlow?: 'envelope' | 'implicit' | null;
34007
+ /**
34008
+ * **Catalog layers only.** Whether action results are returned to the model as native tool-result
34009
+ * turns instead of a markdown "Action results" user message. Absent means `false`. Consulted
34010
+ * only when the gate resolves native.
34011
+ */
34012
+ NativeToolResults?: boolean | null;
34013
+ }
34014
+ /**
34015
+ * MJ-normalized turn-detection settings for realtime (speech-to-speech) models. Every field is
34016
+ * optional; absent fields contribute nothing. Provider profiles translate this vocabulary to their
34017
+ * native wire block, and an unsupported value is diagnostic-logged and falls back to the profile
34018
+ * default — a wrong inherited value degrades safely, it never rejects a session.
34019
+ */
34020
+ export interface MJAIPromptEntity_RealtimeTurnDetectionSettings {
34021
+ /**
34022
+ * - `'default'` — let the provider profile decide (today's behavior).
34023
+ * - `'serverVad'` — classic silence-based server VAD.
34024
+ * - `'semanticVad'` — semantic end-of-utterance detection (OpenAI `semantic_vad`).
34025
+ * - `'native'` — this model's smartest documented turn/duplex mode, whatever the profile maps it
34026
+ * to; the forward slot for full-duplex reasoning voice models.
34027
+ */
34028
+ Mode?: 'default' | 'serverVad' | 'semanticVad' | 'native' | null;
34029
+ /** Semantic-VAD aggressiveness (OpenAI `eagerness`); ignored without a mapping. */
34030
+ Eagerness?: 'low' | 'auto' | 'high' | null;
34031
+ /** Server-VAD activation threshold (0–1); ignored without a mapping. */
34032
+ Threshold?: number | null;
34033
+ /** Server-VAD trailing-silence duration in ms; ignored without a mapping. */
34034
+ SilenceDurationMs?: number | null;
34035
+ }
34036
+ /**
34037
+ * Reasoning-plane settings for realtime models — dual delegation configuration. Absent defaults to
34038
+ * `'local'`.
34039
+ */
34040
+ export interface MJAIPromptEntity_RealtimeReasoningSettings {
34041
+ /**
34042
+ * Which plane handles reasoning:
34043
+ * - `'local'` — application/agent loop (default).
34044
+ * - `'remote'` — delegated to remote model or hosted agent.
34045
+ */
34046
+ Plane?: 'local' | 'remote' | null;
34047
+ /** Remote reasoning target configuration. */
34048
+ Remote?: {
34049
+ Kind?: 'model' | 'hostedAgent' | null;
34050
+ Ref?: string | null;
34051
+ Effort?: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | null;
34052
+ MaxOutputTokens?: number | null;
34053
+ } | null;
34054
+ }
34055
+ /** Realtime (speech-to-speech) knobs. */
34056
+ export interface MJAIPromptEntity_RealtimeConfigurationSettings {
34057
+ /**
34058
+ * Catalog-level turn-detection default for this model. Folded into the realtime session Config
34059
+ * bag as the `turnDetection` key BELOW the agent/app config cascade
34060
+ * (`realtime.session.turnDetection`) and the runtime override — the catalog supplies the
34061
+ * default, agents/apps/callers refine it.
34062
+ */
34063
+ TurnDetection?: MJAIPromptEntity_RealtimeTurnDetectionSettings | null;
34064
+ /**
34065
+ * Reasoning plane settings — dual delegation configuration. Absent defaults to `'local'`.
34066
+ */
34067
+ Reasoning?: MJAIPromptEntity_RealtimeReasoningSettings | null;
34068
+ }
34069
+ /** Vision knobs. Reserved — no consumers yet. */
34070
+ export interface MJAIPromptEntity_VisionConfigurationSettings {
34071
+ [key: string]: unknown;
34072
+ }
34073
+ /** Audio (TTS/STT) knobs. Reserved — no consumers yet. */
34074
+ export interface MJAIPromptEntity_AudioConfigurationSettings {
34075
+ [key: string]: unknown;
34076
+ }
34077
+ /**
34078
+ * The `ModelConfiguration` column on the three MODEL-CATALOG entities (`MJ: AI Model Types`,
34079
+ * `MJ: AI Models`, `MJ: AI Model Vendors`), which form an inherit-with-override cascade. Sections
34080
+ * are per-modality so one catalog row can configure everything its model does.
34081
+ */
34082
+ export interface MJAIPromptEntity_IAIModelConfiguration {
34083
+ /** Text-generation knobs. Honors the catalog-layer properties. */
34084
+ LLM?: MJAIPromptEntity_LLMConfigurationSettings | null;
34085
+ /** Realtime (speech-to-speech) knobs. */
34086
+ Realtime?: MJAIPromptEntity_RealtimeConfigurationSettings | null;
34087
+ /** Vision knobs. Reserved. */
34088
+ Vision?: MJAIPromptEntity_VisionConfigurationSettings | null;
34089
+ /** Audio (TTS/STT) knobs. Reserved. */
34090
+ Audio?: MJAIPromptEntity_AudioConfigurationSettings | null;
34091
+ }
34092
+ /**
34093
+ * The `PromptConfiguration` column on `MJ: AI Prompts` — per-prompt call-time knobs, layered ON TOP of the
34094
+ * resolved model-catalog configuration by the prompt runner.
34095
+ *
34096
+ * The same anti-widening argument that produced `ModelConfiguration` applies here with more force:
34097
+ * `AIPrompt` already carries fifty-odd columns. New per-prompt call-time knobs land here.
34098
+ */
34099
+ export interface MJAIPromptEntity_IAIPromptConfiguration {
34100
+ /** Text-generation knobs. Honors the prompt-layer properties. */
34101
+ LLM?: MJAIPromptEntity_LLMConfigurationSettings | null;
34102
+ /** Realtime knobs. Reserved at this layer. */
34103
+ Realtime?: MJAIPromptEntity_RealtimeConfigurationSettings | null;
34104
+ /** Vision knobs. Reserved. */
34105
+ Vision?: MJAIPromptEntity_VisionConfigurationSettings | null;
34106
+ /** Audio knobs. Reserved. */
34107
+ Audio?: MJAIPromptEntity_AudioConfigurationSettings | null;
34108
+ }
34109
+ /**
34110
+ * The `PromptConfiguration` column on `MJ: AI Prompt Models` — the most specific layer, overriding both
34111
+ * the prompt's own bag and the model catalog for this one (prompt, model) pairing.
34112
+ */
34113
+ export interface MJAIPromptEntity_IAIPromptModelConfiguration {
34114
+ /** Text-generation knobs. Honors the prompt-layer properties. */
34115
+ LLM?: MJAIPromptEntity_LLMConfigurationSettings | null;
34116
+ /** Realtime knobs. Reserved at this layer. */
34117
+ Realtime?: MJAIPromptEntity_RealtimeConfigurationSettings | null;
34118
+ /** Vision knobs. Reserved. */
34119
+ Vision?: MJAIPromptEntity_VisionConfigurationSettings | null;
34120
+ /** Audio knobs. Reserved. */
34121
+ Audio?: MJAIPromptEntity_AudioConfigurationSettings | null;
34122
+ }
32362
34123
  /**
32363
34124
  * MJ: AI Prompts - strongly typed entity sub-class
32364
34125
  * * Schema: __mj
@@ -33033,6 +34794,23 @@ export declare class MJAIPromptEntity extends BaseEntity<MJAIPromptEntityType> {
33033
34794
  get RequireSpecificModels(): boolean;
33034
34795
  set RequireSpecificModels(value: boolean);
33035
34796
  /**
34797
+ * * Field Name: PromptConfiguration
34798
+ * * Display Name: Prompt Configuration
34799
+ * * SQL Data Type: nvarchar(MAX)
34800
+ * * JSON Type: MJAIPromptEntity_IAIPromptConfiguration
34801
+ * * Description: Per-prompt call-time configuration bag (JSON, IAIPromptConfiguration shape: LLM / Realtime / Vision / Audio sections). Base layer of the prompt Configuration cascade — AIPromptModel rows inherit from it per key and may override — and itself layered on top of the resolved AIModel/AIModelVendor ModelConfiguration. NULL = contributes nothing.
34802
+ */
34803
+ get PromptConfiguration(): string | null;
34804
+ set PromptConfiguration(value: string | null);
34805
+ private _PromptConfigurationObject_cached;
34806
+ private _PromptConfigurationObject_lastRaw;
34807
+ /**
34808
+ * Typed accessor for PromptConfiguration — returns parsed JSON as MJAIPromptEntity_IAIPromptConfiguration.
34809
+ * Uses lazy parsing with cache invalidation when the underlying raw value changes.
34810
+ */
34811
+ get PromptConfigurationObject(): MJAIPromptEntity_IAIPromptConfiguration | null;
34812
+ set PromptConfigurationObject(value: MJAIPromptEntity_IAIPromptConfiguration | null);
34813
+ /**
33036
34814
  * * Field Name: Template
33037
34815
  * * Display Name: Template Text
33038
34816
  * * SQL Data Type: nvarchar(255)
@@ -33533,6 +35311,15 @@ export declare class MJAISkillActionEntity extends BaseEntity<MJAISkillActionEnt
33533
35311
  */
33534
35312
  get __mj_UpdatedAt(): Date;
33535
35313
  /**
35314
+ * * Field Name: ExposeToModel
35315
+ * * Display Name: Expose to Model
35316
+ * * SQL Data Type: bit
35317
+ * * Default Value: 1
35318
+ * * Description: Whether activating the skill puts this action into the agent's run. 1 (default): the action is described to the model and callable during the run, today's behaviour. 0: the action stays bundled with the skill (SKILL.md export, tooling) but is left out of the run entirely: not described to the model and not executable by the agent; only application code invokes it, through the Actions API. Use 0 for actions a person triggers through the UI on a later turn, such as a menu button in the skill's reply.
35319
+ */
35320
+ get ExposeToModel(): boolean;
35321
+ set ExposeToModel(value: boolean);
35322
+ /**
33536
35323
  * * Field Name: Skill
33537
35324
  * * Display Name: Skill
33538
35325
  * * SQL Data Type: nvarchar(255)
@@ -51681,6 +53468,15 @@ export declare class MJEntityEntity extends BaseEntity<MJEntityEntityType> {
51681
53468
  get SubtypeSelectorObject(): MJEntityEntity_IEntitySubtypeSelectorConfig | null;
51682
53469
  set SubtypeSelectorObject(value: MJEntityEntity_IEntitySubtypeSelectorConfig | null);
51683
53470
  /**
53471
+ * * Field Name: EnableFieldLevelSecurity
53472
+ * * Display Name: Enable Field Level Security
53473
+ * * SQL Data Type: bit
53474
+ * * Default Value: 0
53475
+ * * Description: When 1, field-level (column-level) security is enforced for this entity and every enforcement point consults EntityFieldPermission rows. When 0 (the default), field-level security is off entirely and any existing permission rows are retained but inactive. Enabling snapshots the entity's current entity-level permissions into per-field rows, so turning it on changes no behavior until an administrator tightens a field; disabling preserves the rows so re-enabling does not lose the configuration.
53476
+ */
53477
+ get EnableFieldLevelSecurity(): boolean;
53478
+ set EnableFieldLevelSecurity(value: boolean);
53479
+ /**
51684
53480
  * * Field Name: CodeName
51685
53481
  * * Display Name: Code Name
51686
53482
  * * SQL Data Type: nvarchar(MAX)
@@ -53097,6 +54893,138 @@ export declare class MJEntityDocumentEntity extends BaseEntity<MJEntityDocumentE
53097
54893
  */
53098
54894
  get ReasoningAgent(): string | null;
53099
54895
  }
54896
+ /**
54897
+ * MJ: Entity Field Permissions - strongly typed entity sub-class
54898
+ * * Schema: __mj
54899
+ * * Base Table: EntityFieldPermission
54900
+ * * Base View: vwEntityFieldPermissions
54901
+ * * @description Role-based field-level (column-level) security. One row per (entity field, role), carrying three independent trinary verbs — ReadAccess, UpdateAccess and CreateAccess — each Allow, Deny or No Access. Rows are only consulted when the parent entity has EnableFieldLevelSecurity = 1. Across the roles a user holds, a verb resolves to (any Allow) AND NOT (any Deny); No Access is neutral and grants nothing while blocking nothing. Read is required for Update and Create, enforced per row by a CHECK constraint and again after aggregation. Primary keys and MemberJunction system audit columns are never restrictable.
54902
+ * * Primary Key: ID
54903
+ * @extends {BaseEntity}
54904
+ * @class
54905
+ * @public
54906
+ */
54907
+ export declare class MJEntityFieldPermissionEntity extends BaseEntity<MJEntityFieldPermissionEntityType> {
54908
+ /**
54909
+ * Loads the MJ: Entity Field Permissions record from the database
54910
+ * @param ID: string - primary key value to load the MJ: Entity Field Permissions record.
54911
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
54912
+ * @returns {Promise<boolean>} - true if successful, false otherwise
54913
+ * @public
54914
+ * @async
54915
+ * @memberof MJEntityFieldPermissionEntity
54916
+ * @method
54917
+ * @override
54918
+ */
54919
+ Load(ID: string, EntityRelationshipsToLoad?: string[]): Promise<boolean>;
54920
+ /**
54921
+ * Validate() method override for MJ: Entity Field Permissions entity. This is an auto-generated method that invokes the generated validators for this entity for the following fields:
54922
+ * * Table-Level: To grant Create or Update access, Read access must also be set to 'Allow'. This prevents users from having permission to modify or create data they cannot view.
54923
+ * @public
54924
+ * @method
54925
+ * @override
54926
+ */
54927
+ Validate(): ValidationResult;
54928
+ /**
54929
+ * To grant Create or Update access, Read access must also be set to 'Allow'. This prevents users from having permission to modify or create data they cannot view.
54930
+ * @param result - the ValidationResult object to add any errors or warnings to
54931
+ * @public
54932
+ * @method
54933
+ */
54934
+ ValidateReadAccessRequiredForCreateOrUpdate(result: ValidationResult): void;
54935
+ /**
54936
+ * * Field Name: ID
54937
+ * * Display Name: ID
54938
+ * * SQL Data Type: uniqueidentifier
54939
+ * * Default Value: newsequentialid()
54940
+ */
54941
+ get ID(): string;
54942
+ set ID(value: string);
54943
+ /**
54944
+ * * Field Name: EntityFieldID
54945
+ * * Display Name: Entity Field ID
54946
+ * * SQL Data Type: uniqueidentifier
54947
+ * * Related Entity/Foreign Key: MJ: Entity Fields (vwEntityFields.ID)
54948
+ */
54949
+ get EntityFieldID(): string;
54950
+ set EntityFieldID(value: string);
54951
+ /**
54952
+ * * Field Name: RoleID
54953
+ * * Display Name: Role ID
54954
+ * * SQL Data Type: uniqueidentifier
54955
+ * * Related Entity/Foreign Key: MJ: Roles (vwRoles.ID)
54956
+ */
54957
+ get RoleID(): string;
54958
+ set RoleID(value: string);
54959
+ /**
54960
+ * * Field Name: ReadAccess
54961
+ * * Display Name: Read Access
54962
+ * * SQL Data Type: nvarchar(20)
54963
+ * * Default Value: No Access
54964
+ * * Value List Type: List
54965
+ * * Possible Values
54966
+ * * Allow
54967
+ * * Deny
54968
+ * * No Access
54969
+ * * Description: Whether this role may read the field's values. Allow grants it; Deny blocks it and beats every Allow from the user's other roles; No Access is neutral (the default) and leaves the outcome to the user's other roles. Enforced at the API output boundary (result projection and GraphQL field mapping), by predicate validation which rejects an ExtraFilter/OrderBy/Aggregate referencing an unreadable field, and by the strongly-typed accessor path which throws.
54970
+ */
54971
+ get ReadAccess(): 'Allow' | 'Deny' | 'No Access';
54972
+ set ReadAccess(value: 'Allow' | 'Deny' | 'No Access');
54973
+ /**
54974
+ * * Field Name: UpdateAccess
54975
+ * * Display Name: Update Access
54976
+ * * SQL Data Type: nvarchar(20)
54977
+ * * Default Value: No Access
54978
+ * * Value List Type: List
54979
+ * * Possible Values
54980
+ * * Allow
54981
+ * * Deny
54982
+ * * No Access
54983
+ * * Description: Whether this role may modify the field's value on an EXISTING record. Allow grants it; Deny blocks it and beats every Allow from the user's other roles; No Access is neutral (the default). Requires ReadAccess = Allow — a field a user cannot see is one they cannot change. Enforced server-side before SQL generation; the client-side BaseEntity check is UX-level defense-in-depth only.
54984
+ */
54985
+ get UpdateAccess(): 'Allow' | 'Deny' | 'No Access';
54986
+ set UpdateAccess(value: 'Allow' | 'Deny' | 'No Access');
54987
+ /**
54988
+ * * Field Name: CreateAccess
54989
+ * * Display Name: Create Access
54990
+ * * SQL Data Type: nvarchar(20)
54991
+ * * Default Value: No Access
54992
+ * * Value List Type: List
54993
+ * * Possible Values
54994
+ * * Allow
54995
+ * * Deny
54996
+ * * No Access
54997
+ * * Description: Whether this role may supply the field's value when INSERTING a record. Allow grants it; Deny blocks it and beats every Allow from the user's other roles; No Access is neutral (the default). Requires ReadAccess = Allow. When a user may not create a field, any value they supply is dropped and the column takes its default — the insert is not rejected, matching the read path where a denied field is simply absent rather than an error. A NOT NULL column with no default that a user cannot create makes records uncreatable for that user; restricted fields should be nullable or defaulted.
54998
+ */
54999
+ get CreateAccess(): 'Allow' | 'Deny' | 'No Access';
55000
+ set CreateAccess(value: 'Allow' | 'Deny' | 'No Access');
55001
+ /**
55002
+ * * Field Name: __mj_CreatedAt
55003
+ * * Display Name: Created At
55004
+ * * SQL Data Type: datetimeoffset
55005
+ * * Default Value: getutcdate()
55006
+ */
55007
+ get __mj_CreatedAt(): Date;
55008
+ /**
55009
+ * * Field Name: __mj_UpdatedAt
55010
+ * * Display Name: Updated At
55011
+ * * SQL Data Type: datetimeoffset
55012
+ * * Default Value: getutcdate()
55013
+ */
55014
+ get __mj_UpdatedAt(): Date;
55015
+ /**
55016
+ * * Field Name: EntityField
55017
+ * * Display Name: Entity Field
55018
+ * * SQL Data Type: nvarchar(255)
55019
+ */
55020
+ get EntityField(): string;
55021
+ /**
55022
+ * * Field Name: Role
55023
+ * * Display Name: Role
55024
+ * * SQL Data Type: nvarchar(50)
55025
+ */
55026
+ get Role(): string;
55027
+ }
53100
55028
  /**
53101
55029
  * MJ: Entity Field Values - strongly typed entity sub-class
53102
55030
  * * Schema: __mj
@@ -57284,6 +59212,21 @@ export declare class MJFormChromeRuleEntity extends BaseEntity<MJFormChromeRuleE
57284
59212
  */
57285
59213
  Load(ID: string, EntityRelationshipsToLoad?: string[]): Promise<boolean>;
57286
59214
  /**
59215
+ * Validate() method override for MJ: Form Chrome Rules entity. This is an auto-generated method that invokes the generated validators for this entity for the following fields:
59216
+ * * Table-Level: Ensures that if the target kind is 'Relationship', a related entity is specified and the contribution key is left empty. Conversely, if the target kind is 'Contribution', a contribution key must be provided and the related entity must be left empty.
59217
+ * @public
59218
+ * @method
59219
+ * @override
59220
+ */
59221
+ Validate(): ValidationResult;
59222
+ /**
59223
+ * Ensures that if the target kind is 'Relationship', a related entity is specified and the contribution key is left empty. Conversely, if the target kind is 'Contribution', a contribution key must be provided and the related entity must be left empty.
59224
+ * @param result - the ValidationResult object to add any errors or warnings to
59225
+ * @public
59226
+ * @method
59227
+ */
59228
+ ValidateTargetKindDependencies(result: ValidationResult): void;
59229
+ /**
57287
59230
  * * Field Name: ID
57288
59231
  * * Display Name: ID
57289
59232
  * * SQL Data Type: uniqueidentifier