@memberjunction/core-entities 5.22.0 → 5.23.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.
@@ -985,6 +985,56 @@ export const MJAIAgentCategorySchema = z.object({
985
985
  * * Display Name: Root Parent
986
986
  * * SQL Data Type: uniqueidentifier`),
987
987
  });
988
+ /**
989
+ * zod schema definition for the entity MJ: AI Agent Client Tools
990
+ */
991
+ export const MJAIAgentClientToolSchema = z.object({
992
+ ID: z.string().describe(`
993
+ * * Field Name: ID
994
+ * * Display Name: ID
995
+ * * SQL Data Type: uniqueidentifier
996
+ * * Default Value: newsequentialid()`),
997
+ AgentID: z.string().describe(`
998
+ * * Field Name: AgentID
999
+ * * Display Name: Agent
1000
+ * * SQL Data Type: uniqueidentifier
1001
+ * * Related Entity/Foreign Key: MJ: AI Agents (vwAIAgents.ID)`),
1002
+ ClientToolDefinitionID: z.string().describe(`
1003
+ * * Field Name: ClientToolDefinitionID
1004
+ * * Display Name: Tool Definition
1005
+ * * SQL Data Type: uniqueidentifier
1006
+ * * Related Entity/Foreign Key: MJ: AI Client Tool Definitions (vwAIClientToolDefinitions.ID)`),
1007
+ IsRequired: z.boolean().describe(`
1008
+ * * Field Name: IsRequired
1009
+ * * Display Name: Is Required
1010
+ * * SQL Data Type: bit
1011
+ * * Default Value: 0
1012
+ * * Description: When true, the agent expects this tool to always be available on the client. If the client has not registered a handler, agent execution may warn or fail depending on configuration.`),
1013
+ Priority: z.number().describe(`
1014
+ * * Field Name: Priority
1015
+ * * Display Name: Priority
1016
+ * * SQL Data Type: int
1017
+ * * Default Value: 0
1018
+ * * Description: Sort order for tool listing in prompts. Lower numbers appear first. Tools with the same priority are listed alphabetically.`),
1019
+ __mj_CreatedAt: z.date().describe(`
1020
+ * * Field Name: __mj_CreatedAt
1021
+ * * Display Name: Created At
1022
+ * * SQL Data Type: datetimeoffset
1023
+ * * Default Value: getutcdate()`),
1024
+ __mj_UpdatedAt: z.date().describe(`
1025
+ * * Field Name: __mj_UpdatedAt
1026
+ * * Display Name: Updated At
1027
+ * * SQL Data Type: datetimeoffset
1028
+ * * Default Value: getutcdate()`),
1029
+ Agent: z.string().nullable().describe(`
1030
+ * * Field Name: Agent
1031
+ * * Display Name: Agent Name
1032
+ * * SQL Data Type: nvarchar(255)`),
1033
+ ClientToolDefinition: z.string().describe(`
1034
+ * * Field Name: ClientToolDefinition
1035
+ * * Display Name: Tool Name
1036
+ * * SQL Data Type: nvarchar(200)`),
1037
+ });
988
1038
  /**
989
1039
  * zod schema definition for the entity MJ: AI Agent Configurations
990
1040
  */
@@ -3228,7 +3278,7 @@ export const MJAIAgentSchema = z.object({
3228
3278
  * * Description: Number of messages that triggers context compression when EnableContextCompression is true.`),
3229
3279
  ContextCompressionPromptID: z.string().nullable().describe(`
3230
3280
  * * Field Name: ContextCompressionPromptID
3231
- * * Display Name: Context Compression Prompt
3281
+ * * Display Name: Compression Prompt
3232
3282
  * * SQL Data Type: uniqueidentifier
3233
3283
  * * Related Entity/Foreign Key: MJ: AI Prompts (vwAIPrompts.ID)`),
3234
3284
  ContextCompressionMessageRetentionCount: z.number().nullable().describe(`
@@ -3397,7 +3447,7 @@ if this limit is exceeded.`),
3397
3447
  * * Description: Default artifact type produced by this agent. This is the primary artifact type; additional artifact types can be linked via AIAgentArtifactType junction table. Can be NULL if agent does not produce artifacts by default.`),
3398
3448
  OwnerUserID: z.string().describe(`
3399
3449
  * * Field Name: OwnerUserID
3400
- * * Display Name: Owner
3450
+ * * Display Name: Owner User
3401
3451
  * * SQL Data Type: uniqueidentifier
3402
3452
  * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)
3403
3453
  * * Default Value: ECAFCCEC-6A37-EF11-86D4-000D3A4E707E
@@ -3516,7 +3566,7 @@ if this limit is exceeded.`),
3516
3566
  * * Description: Base path within the storage provider for this agent's attachments. Agent run ID and sequence number are appended to create unique paths. Format: /folder/subfolder`),
3517
3567
  InlineStorageThresholdBytes: z.number().nullable().describe(`
3518
3568
  * * Field Name: InlineStorageThresholdBytes
3519
- * * Display Name: Inline Storage Threshold (Bytes)
3569
+ * * Display Name: Inline Storage Threshold Bytes
3520
3570
  * * SQL Data Type: int
3521
3571
  * * Description: File size threshold for inline storage. Files <= this size are stored as base64 inline, larger files use MJStorage. NULL uses system default (1MB). Set to 0 to always use MJStorage.`),
3522
3572
  AgentTypePromptParams: z.string().nullable().describe(`
@@ -3531,13 +3581,13 @@ if this limit is exceeded.`),
3531
3581
  * * Description: JSON configuration defining scope dimensions for multi-tenant deployments. Example: {"dimensions":[{"name":"OrganizationID","entityId":"...","isPrimary":true,"required":true},{"name":"ContactID","entityId":"...","isPrimary":false,"required":false}],"inheritanceMode":"cascading"}`),
3532
3582
  NoteRetentionDays: z.number().nullable().describe(`
3533
3583
  * * Field Name: NoteRetentionDays
3534
- * * Display Name: Note Retention (Days)
3584
+ * * Display Name: Note Retention Days
3535
3585
  * * SQL Data Type: int
3536
3586
  * * Default Value: 90
3537
3587
  * * Description: Number of days to retain notes before archiving due to inactivity. Default 90. NULL means use system default.`),
3538
3588
  ExampleRetentionDays: z.number().nullable().describe(`
3539
3589
  * * Field Name: ExampleRetentionDays
3540
- * * Display Name: Example Retention (Days)
3590
+ * * Display Name: Example Retention Days
3541
3591
  * * SQL Data Type: int
3542
3592
  * * Default Value: 180
3543
3593
  * * Description: Number of days to retain examples before archiving due to inactivity. Default 180. NULL means use system default.`),
@@ -3558,6 +3608,12 @@ if this limit is exceeded.`),
3558
3608
  * * SQL Data Type: uniqueidentifier
3559
3609
  * * Related Entity/Foreign Key: MJ: AI Agent Categories (vwAIAgentCategories.ID)
3560
3610
  * * Description: Foreign key to AIAgentCategory. Assigns this agent to an organizational category for grouping, filtering, and inherited assignment strategy resolution.`),
3611
+ AllowEphemeralClientTools: z.boolean().describe(`
3612
+ * * Field Name: AllowEphemeralClientTools
3613
+ * * Display Name: Allow Ephemeral Client Tools
3614
+ * * SQL Data Type: bit
3615
+ * * Default Value: 1
3616
+ * * Description: When true (default), this agent accepts runtime-registered ephemeral client tools that are not defined in metadata. Set to false for agents that require strict tool governance.`),
3561
3617
  Parent: z.string().nullable().describe(`
3562
3618
  * * Field Name: Parent
3563
3619
  * * Display Name: Parent Name
@@ -3576,7 +3632,7 @@ if this limit is exceeded.`),
3576
3632
  * * SQL Data Type: nvarchar(100)`),
3577
3633
  OwnerUser: z.string().describe(`
3578
3634
  * * Field Name: OwnerUser
3579
- * * Display Name: Owner Name
3635
+ * * Display Name: Owner User Name
3580
3636
  * * SQL Data Type: nvarchar(100)`),
3581
3637
  AttachmentStorageProvider: z.string().nullable().describe(`
3582
3638
  * * Field Name: AttachmentStorageProvider
@@ -3655,6 +3711,62 @@ export const MJAIArchitectureSchema = z.object({
3655
3711
  * * Display Name: Root Parent Architecture ID
3656
3712
  * * SQL Data Type: uniqueidentifier`),
3657
3713
  });
3714
+ /**
3715
+ * zod schema definition for the entity MJ: AI Client Tool Definitions
3716
+ */
3717
+ export const MJAIClientToolDefinitionSchema = z.object({
3718
+ ID: z.string().describe(`
3719
+ * * Field Name: ID
3720
+ * * Display Name: ID
3721
+ * * SQL Data Type: uniqueidentifier
3722
+ * * Default Value: newsequentialid()`),
3723
+ Name: z.string().describe(`
3724
+ * * Field Name: Name
3725
+ * * Display Name: Tool Name
3726
+ * * SQL Data Type: nvarchar(200)
3727
+ * * Description: Unique identifier for the client tool (e.g., NavigateToApp, NavigateToRecord). Used to match tool invocations from the LLM to registered handlers on the client.`),
3728
+ Description: z.string().describe(`
3729
+ * * Field Name: Description
3730
+ * * Display Name: Description
3731
+ * * SQL Data Type: nvarchar(MAX)
3732
+ * * Description: Human-readable description of what the tool does. This text is injected into the LLM system prompt so it knows when and how to use the tool.`),
3733
+ Category: z.string().nullable().describe(`
3734
+ * * Field Name: Category
3735
+ * * Display Name: Category
3736
+ * * SQL Data Type: nvarchar(50)
3737
+ * * Description: Tool category for grouping and filtering (e.g., navigation, form, display, data).`),
3738
+ InputSchemaJSON: z.string().nullable().describe(`
3739
+ * * Field Name: InputSchemaJSON
3740
+ * * Display Name: Input Schema
3741
+ * * SQL Data Type: nvarchar(MAX)
3742
+ * * Description: JSON Schema defining the input parameters the tool accepts. Included in the LLM prompt so it generates valid parameter objects.`),
3743
+ OutputSchemaJSON: z.string().nullable().describe(`
3744
+ * * Field Name: OutputSchemaJSON
3745
+ * * Display Name: Output Schema
3746
+ * * SQL Data Type: nvarchar(MAX)
3747
+ * * Description: JSON Schema describing the return value from the tool. Optional — used for documentation and LLM context.`),
3748
+ DefaultTimeoutMs: z.number().nullable().describe(`
3749
+ * * Field Name: DefaultTimeoutMs
3750
+ * * Display Name: Default Timeout (ms)
3751
+ * * SQL Data Type: int
3752
+ * * Default Value: 30000
3753
+ * * Description: Default timeout in milliseconds for this tool. Can be overridden per-invocation by the LLM or per-run by execution params. Default is 30000ms (30 seconds).`),
3754
+ RequiresContextType: z.string().nullable().describe(`
3755
+ * * Field Name: RequiresContextType
3756
+ * * Display Name: Required Context Type
3757
+ * * SQL Data Type: nvarchar(100)
3758
+ * * Description: When set, the client only sends this tool to the server when the user is in the specified context (e.g., entity-form, dashboard, search). Null means the tool is always available.`),
3759
+ __mj_CreatedAt: z.date().describe(`
3760
+ * * Field Name: __mj_CreatedAt
3761
+ * * Display Name: Created At
3762
+ * * SQL Data Type: datetimeoffset
3763
+ * * Default Value: getutcdate()`),
3764
+ __mj_UpdatedAt: z.date().describe(`
3765
+ * * Field Name: __mj_UpdatedAt
3766
+ * * Display Name: Updated At
3767
+ * * SQL Data Type: datetimeoffset
3768
+ * * Default Value: getutcdate()`),
3769
+ });
3658
3770
  /**
3659
3771
  * zod schema definition for the entity MJ: AI Configuration Params
3660
3772
  */
@@ -6677,10 +6789,11 @@ export const MJApplicationSchema = z.object({
6677
6789
  * * Display Name: Color
6678
6790
  * * SQL Data Type: nvarchar(20)
6679
6791
  * * Description: Hex color code for visual theming (e.g., #4caf50)`),
6680
- DefaultNavItems: z.string().nullable().describe(`
6792
+ DefaultNavItems: z.any().nullable().describe(`
6681
6793
  * * Field Name: DefaultNavItems
6682
6794
  * * Display Name: Default Nav Items
6683
6795
  * * SQL Data Type: nvarchar(MAX)
6796
+ * * JSON Type: Array<MJApplicationEntity_IDefaultNavItem>
6684
6797
  * * Description: JSON array of default navigation items for this application. Parsed by BaseApplication.GetNavItems()`),
6685
6798
  ClassName: z.string().nullable().describe(`
6686
6799
  * * Field Name: ClassName
@@ -9197,6 +9310,12 @@ export const MJContentItemTagSchema = z.object({
9197
9310
  * * Display Name: Updated At
9198
9311
  * * SQL Data Type: datetimeoffset
9199
9312
  * * Default Value: getutcdate()`),
9313
+ Weight: z.number().describe(`
9314
+ * * Field Name: Weight
9315
+ * * Display Name: Weight
9316
+ * * SQL Data Type: numeric(5, 4)
9317
+ * * Default Value: 1.0
9318
+ * * Description: Relevance weight for this tag (0.0-1.0). 1.0 = highly relevant central topic, 0.5 = moderately relevant, 0.1 = tangentially related. Assigned by the LLM during autotagging.`),
9200
9319
  Item: z.string().nullable().describe(`
9201
9320
  * * Field Name: Item
9202
9321
  * * Display Name: Item
@@ -9454,17 +9573,17 @@ export const MJContentSourceSchema = z.object({
9454
9573
  * * SQL Data Type: nvarchar(255)`),
9455
9574
  ContentTypeID: z.string().describe(`
9456
9575
  * * Field Name: ContentTypeID
9457
- * * Display Name: Content Type ID
9576
+ * * Display Name: Content Type
9458
9577
  * * SQL Data Type: uniqueidentifier
9459
9578
  * * Related Entity/Foreign Key: MJ: Content Types (vwContentTypes.ID)`),
9460
9579
  ContentSourceTypeID: z.string().describe(`
9461
9580
  * * Field Name: ContentSourceTypeID
9462
- * * Display Name: Content Source Type ID
9581
+ * * Display Name: Content Source Type
9463
9582
  * * SQL Data Type: uniqueidentifier
9464
9583
  * * Related Entity/Foreign Key: MJ: Content Source Types (vwContentSourceTypes.ID)`),
9465
9584
  ContentFileTypeID: z.string().describe(`
9466
9585
  * * Field Name: ContentFileTypeID
9467
- * * Display Name: Content File Type ID
9586
+ * * Display Name: Content File Type
9468
9587
  * * SQL Data Type: uniqueidentifier
9469
9588
  * * Related Entity/Foreign Key: MJ: Content File Types (vwContentFileTypes.ID)`),
9470
9589
  URL: z.string().describe(`
@@ -9482,6 +9601,18 @@ export const MJContentSourceSchema = z.object({
9482
9601
  * * Display Name: Updated At
9483
9602
  * * SQL Data Type: datetimeoffset
9484
9603
  * * Default Value: getutcdate()`),
9604
+ EmbeddingModelID: z.string().nullable().describe(`
9605
+ * * Field Name: EmbeddingModelID
9606
+ * * Display Name: Embedding Model
9607
+ * * SQL Data Type: uniqueidentifier
9608
+ * * Related Entity/Foreign Key: MJ: AI Models (vwAIModels.ID)
9609
+ * * Description: Per-source override for the AI embedding model. When NULL, falls back to the ContentType default.`),
9610
+ VectorIndexID: z.string().nullable().describe(`
9611
+ * * Field Name: VectorIndexID
9612
+ * * Display Name: Vector Index
9613
+ * * SQL Data Type: uniqueidentifier
9614
+ * * Related Entity/Foreign Key: MJ: Vector Indexes (vwVectorIndexes.ID)
9615
+ * * Description: Per-source override for the vector index. When NULL, falls back to the ContentType default.`),
9485
9616
  ContentType: z.string().describe(`
9486
9617
  * * Field Name: ContentType
9487
9618
  * * Display Name: Content Type
@@ -9494,6 +9625,14 @@ export const MJContentSourceSchema = z.object({
9494
9625
  * * Field Name: ContentFileType
9495
9626
  * * Display Name: Content File Type
9496
9627
  * * SQL Data Type: nvarchar(255)`),
9628
+ EmbeddingModel: z.string().nullable().describe(`
9629
+ * * Field Name: EmbeddingModel
9630
+ * * Display Name: Embedding Model
9631
+ * * SQL Data Type: nvarchar(50)`),
9632
+ VectorIndex: z.string().nullable().describe(`
9633
+ * * Field Name: VectorIndex
9634
+ * * Display Name: Vector Index
9635
+ * * SQL Data Type: nvarchar(255)`),
9497
9636
  });
9498
9637
  /**
9499
9638
  * zod schema definition for the entity MJ: Content Type Attributes
@@ -9552,17 +9691,17 @@ export const MJContentTypeSchema = z.object({
9552
9691
  * * SQL Data Type: nvarchar(MAX)`),
9553
9692
  AIModelID: z.string().describe(`
9554
9693
  * * Field Name: AIModelID
9555
- * * Display Name: AIModel ID
9694
+ * * Display Name: AI Model
9556
9695
  * * SQL Data Type: uniqueidentifier
9557
9696
  * * Related Entity/Foreign Key: MJ: AI Models (vwAIModels.ID)`),
9558
9697
  MinTags: z.number().describe(`
9559
9698
  * * Field Name: MinTags
9560
- * * Display Name: Min Tags
9699
+ * * Display Name: Minimum Tags
9561
9700
  * * SQL Data Type: int
9562
9701
  * * Description: Minimum number of tags that must be applied to content of this type.`),
9563
9702
  MaxTags: z.number().describe(`
9564
9703
  * * Field Name: MaxTags
9565
- * * Display Name: Max Tags
9704
+ * * Display Name: Maximum Tags
9566
9705
  * * SQL Data Type: int
9567
9706
  * * Description: Maximum number of tags allowed on content of this type.`),
9568
9707
  __mj_CreatedAt: z.date().describe(`
@@ -9575,10 +9714,30 @@ export const MJContentTypeSchema = z.object({
9575
9714
  * * Display Name: Updated At
9576
9715
  * * SQL Data Type: datetimeoffset
9577
9716
  * * Default Value: getutcdate()`),
9717
+ EmbeddingModelID: z.string().nullable().describe(`
9718
+ * * Field Name: EmbeddingModelID
9719
+ * * Display Name: Embedding Model
9720
+ * * SQL Data Type: uniqueidentifier
9721
+ * * Related Entity/Foreign Key: MJ: AI Models (vwAIModels.ID)
9722
+ * * Description: Default AI embedding model for vectorizing content items of this type. Sources can override per-source. If NULL, uses the first available embedding model.`),
9723
+ VectorIndexID: z.string().nullable().describe(`
9724
+ * * Field Name: VectorIndexID
9725
+ * * Display Name: Vector Index
9726
+ * * SQL Data Type: uniqueidentifier
9727
+ * * Related Entity/Foreign Key: MJ: Vector Indexes (vwVectorIndexes.ID)
9728
+ * * Description: Default vector index for storing embeddings of this content type. Sources can override per-source. If NULL, uses the first available vector index.`),
9578
9729
  AIModel: z.string().describe(`
9579
9730
  * * Field Name: AIModel
9580
- * * Display Name: AIModel
9731
+ * * Display Name: AI Model Name
9581
9732
  * * SQL Data Type: nvarchar(50)`),
9733
+ EmbeddingModel: z.string().nullable().describe(`
9734
+ * * Field Name: EmbeddingModel
9735
+ * * Display Name: Embedding Model Name
9736
+ * * SQL Data Type: nvarchar(50)`),
9737
+ VectorIndex: z.string().nullable().describe(`
9738
+ * * Field Name: VectorIndex
9739
+ * * Display Name: Vector Index Name
9740
+ * * SQL Data Type: nvarchar(255)`),
9582
9741
  });
9583
9742
  /**
9584
9743
  * zod schema definition for the entity MJ: Conversation Artifact Permissions
@@ -11228,7 +11387,7 @@ export const MJDuplicateRunDetailMatchSchema = z.object({
11228
11387
  * * Default Value: newsequentialid()`),
11229
11388
  DuplicateRunDetailID: z.string().describe(`
11230
11389
  * * Field Name: DuplicateRunDetailID
11231
- * * Display Name: Duplicate Run Detail
11390
+ * * Display Name: Duplicate Run Detail ID
11232
11391
  * * SQL Data Type: uniqueidentifier
11233
11392
  * * Related Entity/Foreign Key: MJ: Duplicate Run Details (vwDuplicateRunDetails.ID)`),
11234
11393
  MatchSource: z.union([z.literal('SP'), z.literal('Vector')]).describe(`
@@ -11243,7 +11402,7 @@ export const MJDuplicateRunDetailMatchSchema = z.object({
11243
11402
  * * Description: Either Vector or SP`),
11244
11403
  MatchRecordID: z.string().describe(`
11245
11404
  * * Field Name: MatchRecordID
11246
- * * Display Name: Match Record
11405
+ * * Display Name: Match Record ID
11247
11406
  * * SQL Data Type: nvarchar(500)
11248
11407
  * * Description: The ID of the record identified as a potential duplicate match.`),
11249
11408
  MatchProbability: z.number().describe(`
@@ -11277,7 +11436,7 @@ export const MJDuplicateRunDetailMatchSchema = z.object({
11277
11436
  * * Description: Current approval status of the proposed action (Pending, Approved, Rejected).`),
11278
11437
  RecordMergeLogID: z.string().nullable().describe(`
11279
11438
  * * Field Name: RecordMergeLogID
11280
- * * Display Name: Record Merge Log
11439
+ * * Display Name: Record Merge Log ID
11281
11440
  * * SQL Data Type: uniqueidentifier
11282
11441
  * * Related Entity/Foreign Key: MJ: Record Merge Logs (vwRecordMergeLogs.ID)`),
11283
11442
  MergeStatus: z.union([z.literal('Complete'), z.literal('Error'), z.literal('Pending')]).describe(`
@@ -11307,6 +11466,11 @@ export const MJDuplicateRunDetailMatchSchema = z.object({
11307
11466
  * * Display Name: Updated At
11308
11467
  * * SQL Data Type: datetimeoffset
11309
11468
  * * Default Value: getutcdate()`),
11469
+ RecordMetadata: z.string().nullable().describe(`
11470
+ * * Field Name: RecordMetadata
11471
+ * * Display Name: Record Metadata
11472
+ * * SQL Data Type: nvarchar(MAX)
11473
+ * * Description: JSON metadata snapshot of the matched record from the vector database at detection time. Contains display fields (Name, Description, EntityIcon, etc.) for rich UI rendering without additional lookups.`),
11310
11474
  DuplicateRunDetail: z.string().describe(`
11311
11475
  * * Field Name: DuplicateRunDetail
11312
11476
  * * Display Name: Duplicate Run Detail
@@ -11327,12 +11491,12 @@ export const MJDuplicateRunDetailSchema = z.object({
11327
11491
  * * Default Value: newsequentialid()`),
11328
11492
  DuplicateRunID: z.string().describe(`
11329
11493
  * * Field Name: DuplicateRunID
11330
- * * Display Name: Duplicate Run ID
11494
+ * * Display Name: Duplicate Run
11331
11495
  * * SQL Data Type: uniqueidentifier
11332
11496
  * * Related Entity/Foreign Key: MJ: Duplicate Runs (vwDuplicateRuns.ID)`),
11333
11497
  RecordID: z.string().describe(`
11334
11498
  * * Field Name: RecordID
11335
- * * Display Name: Record ID
11499
+ * * Display Name: Source Record
11336
11500
  * * SQL Data Type: nvarchar(500)
11337
11501
  * * Description: The ID of the record being analyzed for duplicates.`),
11338
11502
  MatchStatus: z.union([z.literal('Complete'), z.literal('Error'), z.literal('Pending'), z.literal('Skipped')]).describe(`
@@ -11384,9 +11548,14 @@ export const MJDuplicateRunDetailSchema = z.object({
11384
11548
  * * Display Name: Updated At
11385
11549
  * * SQL Data Type: datetimeoffset
11386
11550
  * * Default Value: getutcdate()`),
11551
+ RecordMetadata: z.string().nullable().describe(`
11552
+ * * Field Name: RecordMetadata
11553
+ * * Display Name: Record Metadata
11554
+ * * SQL Data Type: nvarchar(MAX)
11555
+ * * Description: JSON metadata snapshot of the source record from the vector database at detection time. Contains display fields (Name, Description, EntityIcon, etc.) for rich UI rendering without additional lookups.`),
11387
11556
  DuplicateRun: z.string().describe(`
11388
11557
  * * Field Name: DuplicateRun
11389
- * * Display Name: Duplicate Run
11558
+ * * Display Name: Run Name
11390
11559
  * * SQL Data Type: nvarchar(255)`),
11391
11560
  });
11392
11561
  /**
@@ -11408,11 +11577,12 @@ export const MJDuplicateRunSchema = z.object({
11408
11577
  * * Display Name: Started By User
11409
11578
  * * SQL Data Type: uniqueidentifier
11410
11579
  * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)`),
11411
- SourceListID: z.string().describe(`
11580
+ SourceListID: z.string().nullable().describe(`
11412
11581
  * * Field Name: SourceListID
11413
11582
  * * Display Name: Source List
11414
11583
  * * SQL Data Type: uniqueidentifier
11415
- * * Related Entity/Foreign Key: MJ: Lists (vwLists.ID)`),
11584
+ * * Related Entity/Foreign Key: MJ: Lists (vwLists.ID)
11585
+ * * Description: Optional List ID to narrow the scope of duplicate detection. When NULL, all records in the entity are scanned. When set, only records in the specified list are checked for duplicates.`),
11416
11586
  StartedAt: z.date().describe(`
11417
11587
  * * Field Name: StartedAt
11418
11588
  * * Display Name: Started At
@@ -11478,7 +11648,7 @@ export const MJDuplicateRunSchema = z.object({
11478
11648
  * * Field Name: StartedByUser
11479
11649
  * * Display Name: Started By User
11480
11650
  * * SQL Data Type: nvarchar(100)`),
11481
- SourceList: z.string().describe(`
11651
+ SourceList: z.string().nullable().describe(`
11482
11652
  * * Field Name: SourceList
11483
11653
  * * Display Name: Source List
11484
11654
  * * SQL Data Type: nvarchar(100)`),
@@ -12890,13 +13060,13 @@ export const MJEntityDocumentSchema = z.object({
12890
13060
  * * Field Name: PotentialMatchThreshold
12891
13061
  * * Display Name: Potential Match Threshold
12892
13062
  * * SQL Data Type: numeric(12, 11)
12893
- * * Default Value: 1
13063
+ * * Default Value: 0.7
12894
13064
  * * Description: Value between 0 and 1 that determines what is considered a potential matching record. Value must be <= AbsoluteMatchThreshold. This is primarily used for duplicate detection but can be used for other applications as well where matching is relevant.`),
12895
13065
  AbsoluteMatchThreshold: z.number().describe(`
12896
13066
  * * Field Name: AbsoluteMatchThreshold
12897
13067
  * * Display Name: Absolute Match Threshold
12898
13068
  * * SQL Data Type: numeric(12, 11)
12899
- * * Default Value: 1
13069
+ * * Default Value: 0.95
12900
13070
  * * Description: Value between 0 and 1 that determines what is considered an absolute matching record. Value must be >= PotentialMatchThreshold. This is primarily used for duplicate detection but can be used for other applications as well where matching is relevant.`),
12901
13071
  __mj_CreatedAt: z.date().describe(`
12902
13072
  * * Field Name: __mj_CreatedAt
@@ -13359,6 +13529,22 @@ export const MJEntityFieldSchema = z.object({
13359
13529
  * * Display Name: Related Entity Join Fields
13360
13530
  * * SQL Data Type: nvarchar(MAX)
13361
13531
  * * Description: JSON configuration for additional fields to join from the related entity into this entity's base view. Supports modes: extend (add to NameField), override (replace NameField), disable (no joins). Schema: { mode?: string, fields?: [{ field: string, alias?: string }] }`),
13532
+ JSONType: z.string().nullable().describe(`
13533
+ * * Field Name: JSONType
13534
+ * * Display Name: JSON Type
13535
+ * * SQL Data Type: nvarchar(255)
13536
+ * * Description: The name of the TypeScript interface/type for this JSON field. When set, CodeGen emits a strongly-typed Object-suffixed accessor using this type instead of only the default string getter/setter.`),
13537
+ JSONTypeIsArray: z.boolean().describe(`
13538
+ * * Field Name: JSONTypeIsArray
13539
+ * * Display Name: JSON Type Is Array
13540
+ * * SQL Data Type: bit
13541
+ * * Default Value: 0
13542
+ * * Description: If true, the field holds a JSON array of JSONType items. The Object accessor returns Array<JSONType> | null and the setter accepts Array<JSONType> | null.`),
13543
+ JSONTypeDefinition: z.string().nullable().describe(`
13544
+ * * Field Name: JSONTypeDefinition
13545
+ * * Display Name: JSON Type Definition
13546
+ * * SQL Data Type: nvarchar(MAX)
13547
+ * * Description: Raw TypeScript code emitted by CodeGen above the entity class definition. Typically contains the interface/type definition referenced by JSONType. Can include imports, multiple types, or any valid TypeScript.`),
13362
13548
  FieldCodeName: z.string().nullable().describe(`
13363
13549
  * * Field Name: FieldCodeName
13364
13550
  * * Display Name: Field Code Name
@@ -25284,6 +25470,134 @@ MJAIAgentCategoryEntity = __decorate([
25284
25470
  RegisterClass(BaseEntity, 'MJ: AI Agent Categories')
25285
25471
  ], MJAIAgentCategoryEntity);
25286
25472
  export { MJAIAgentCategoryEntity };
25473
+ /**
25474
+ * MJ: AI Agent Client Tools - strongly typed entity sub-class
25475
+ * * Schema: __mj
25476
+ * * Base Table: AIAgentClientTool
25477
+ * * Base View: vwAIAgentClientTools
25478
+ * * Primary Key: ID
25479
+ * @extends {BaseEntity}
25480
+ * @class
25481
+ * @public
25482
+ */
25483
+ let MJAIAgentClientToolEntity = class MJAIAgentClientToolEntity extends BaseEntity {
25484
+ /**
25485
+ * Loads the MJ: AI Agent Client Tools record from the database
25486
+ * @param ID: string - primary key value to load the MJ: AI Agent Client Tools record.
25487
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
25488
+ * @returns {Promise<boolean>} - true if successful, false otherwise
25489
+ * @public
25490
+ * @async
25491
+ * @memberof MJAIAgentClientToolEntity
25492
+ * @method
25493
+ * @override
25494
+ */
25495
+ async Load(ID, EntityRelationshipsToLoad) {
25496
+ const compositeKey = new CompositeKey();
25497
+ compositeKey.KeyValuePairs.push({ FieldName: 'ID', Value: ID });
25498
+ return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
25499
+ }
25500
+ /**
25501
+ * * Field Name: ID
25502
+ * * Display Name: ID
25503
+ * * SQL Data Type: uniqueidentifier
25504
+ * * Default Value: newsequentialid()
25505
+ */
25506
+ get ID() {
25507
+ return this.Get('ID');
25508
+ }
25509
+ set ID(value) {
25510
+ this.Set('ID', value);
25511
+ }
25512
+ /**
25513
+ * * Field Name: AgentID
25514
+ * * Display Name: Agent
25515
+ * * SQL Data Type: uniqueidentifier
25516
+ * * Related Entity/Foreign Key: MJ: AI Agents (vwAIAgents.ID)
25517
+ */
25518
+ get AgentID() {
25519
+ return this.Get('AgentID');
25520
+ }
25521
+ set AgentID(value) {
25522
+ this.Set('AgentID', value);
25523
+ }
25524
+ /**
25525
+ * * Field Name: ClientToolDefinitionID
25526
+ * * Display Name: Tool Definition
25527
+ * * SQL Data Type: uniqueidentifier
25528
+ * * Related Entity/Foreign Key: MJ: AI Client Tool Definitions (vwAIClientToolDefinitions.ID)
25529
+ */
25530
+ get ClientToolDefinitionID() {
25531
+ return this.Get('ClientToolDefinitionID');
25532
+ }
25533
+ set ClientToolDefinitionID(value) {
25534
+ this.Set('ClientToolDefinitionID', value);
25535
+ }
25536
+ /**
25537
+ * * Field Name: IsRequired
25538
+ * * Display Name: Is Required
25539
+ * * SQL Data Type: bit
25540
+ * * Default Value: 0
25541
+ * * Description: When true, the agent expects this tool to always be available on the client. If the client has not registered a handler, agent execution may warn or fail depending on configuration.
25542
+ */
25543
+ get IsRequired() {
25544
+ return this.Get('IsRequired');
25545
+ }
25546
+ set IsRequired(value) {
25547
+ this.Set('IsRequired', value);
25548
+ }
25549
+ /**
25550
+ * * Field Name: Priority
25551
+ * * Display Name: Priority
25552
+ * * SQL Data Type: int
25553
+ * * Default Value: 0
25554
+ * * Description: Sort order for tool listing in prompts. Lower numbers appear first. Tools with the same priority are listed alphabetically.
25555
+ */
25556
+ get Priority() {
25557
+ return this.Get('Priority');
25558
+ }
25559
+ set Priority(value) {
25560
+ this.Set('Priority', value);
25561
+ }
25562
+ /**
25563
+ * * Field Name: __mj_CreatedAt
25564
+ * * Display Name: Created At
25565
+ * * SQL Data Type: datetimeoffset
25566
+ * * Default Value: getutcdate()
25567
+ */
25568
+ get __mj_CreatedAt() {
25569
+ return this.Get('__mj_CreatedAt');
25570
+ }
25571
+ /**
25572
+ * * Field Name: __mj_UpdatedAt
25573
+ * * Display Name: Updated At
25574
+ * * SQL Data Type: datetimeoffset
25575
+ * * Default Value: getutcdate()
25576
+ */
25577
+ get __mj_UpdatedAt() {
25578
+ return this.Get('__mj_UpdatedAt');
25579
+ }
25580
+ /**
25581
+ * * Field Name: Agent
25582
+ * * Display Name: Agent Name
25583
+ * * SQL Data Type: nvarchar(255)
25584
+ */
25585
+ get Agent() {
25586
+ return this.Get('Agent');
25587
+ }
25588
+ /**
25589
+ * * Field Name: ClientToolDefinition
25590
+ * * Display Name: Tool Name
25591
+ * * SQL Data Type: nvarchar(200)
25592
+ */
25593
+ get ClientToolDefinition() {
25594
+ return this.Get('ClientToolDefinition');
25595
+ }
25596
+ };
25597
+ MJAIAgentClientToolEntity = __decorate([
25598
+ RegisterClass(BaseEntity, 'MJ: AI Agent Client Tools')
25599
+ ], MJAIAgentClientToolEntity);
25600
+ export { MJAIAgentClientToolEntity };
25287
25601
  /**
25288
25602
  * MJ: AI Agent Configurations - strongly typed entity sub-class
25289
25603
  * * Schema: __mj
@@ -31027,7 +31341,7 @@ let MJAIAgentEntity = class MJAIAgentEntity extends BaseEntity {
31027
31341
  }
31028
31342
  /**
31029
31343
  * * Field Name: ContextCompressionPromptID
31030
- * * Display Name: Context Compression Prompt
31344
+ * * Display Name: Compression Prompt
31031
31345
  * * SQL Data Type: uniqueidentifier
31032
31346
  * * Related Entity/Foreign Key: MJ: AI Prompts (vwAIPrompts.ID)
31033
31347
  */
@@ -31378,7 +31692,7 @@ if this limit is exceeded.
31378
31692
  }
31379
31693
  /**
31380
31694
  * * Field Name: OwnerUserID
31381
- * * Display Name: Owner
31695
+ * * Display Name: Owner User
31382
31696
  * * SQL Data Type: uniqueidentifier
31383
31697
  * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)
31384
31698
  * * Default Value: ECAFCCEC-6A37-EF11-86D4-000D3A4E707E
@@ -31609,7 +31923,7 @@ if this limit is exceeded.
31609
31923
  }
31610
31924
  /**
31611
31925
  * * Field Name: InlineStorageThresholdBytes
31612
- * * Display Name: Inline Storage Threshold (Bytes)
31926
+ * * Display Name: Inline Storage Threshold Bytes
31613
31927
  * * SQL Data Type: int
31614
31928
  * * Description: File size threshold for inline storage. Files <= this size are stored as base64 inline, larger files use MJStorage. NULL uses system default (1MB). Set to 0 to always use MJStorage.
31615
31929
  */
@@ -31645,7 +31959,7 @@ if this limit is exceeded.
31645
31959
  }
31646
31960
  /**
31647
31961
  * * Field Name: NoteRetentionDays
31648
- * * Display Name: Note Retention (Days)
31962
+ * * Display Name: Note Retention Days
31649
31963
  * * SQL Data Type: int
31650
31964
  * * Default Value: 90
31651
31965
  * * Description: Number of days to retain notes before archiving due to inactivity. Default 90. NULL means use system default.
@@ -31658,7 +31972,7 @@ if this limit is exceeded.
31658
31972
  }
31659
31973
  /**
31660
31974
  * * Field Name: ExampleRetentionDays
31661
- * * Display Name: Example Retention (Days)
31975
+ * * Display Name: Example Retention Days
31662
31976
  * * SQL Data Type: int
31663
31977
  * * Default Value: 180
31664
31978
  * * Description: Number of days to retain examples before archiving due to inactivity. Default 180. NULL means use system default.
@@ -31708,6 +32022,19 @@ if this limit is exceeded.
31708
32022
  this.Set('CategoryID', value);
31709
32023
  }
31710
32024
  /**
32025
+ * * Field Name: AllowEphemeralClientTools
32026
+ * * Display Name: Allow Ephemeral Client Tools
32027
+ * * SQL Data Type: bit
32028
+ * * Default Value: 1
32029
+ * * Description: When true (default), this agent accepts runtime-registered ephemeral client tools that are not defined in metadata. Set to false for agents that require strict tool governance.
32030
+ */
32031
+ get AllowEphemeralClientTools() {
32032
+ return this.Get('AllowEphemeralClientTools');
32033
+ }
32034
+ set AllowEphemeralClientTools(value) {
32035
+ this.Set('AllowEphemeralClientTools', value);
32036
+ }
32037
+ /**
31711
32038
  * * Field Name: Parent
31712
32039
  * * Display Name: Parent Name
31713
32040
  * * SQL Data Type: nvarchar(255)
@@ -31741,7 +32068,7 @@ if this limit is exceeded.
31741
32068
  }
31742
32069
  /**
31743
32070
  * * Field Name: OwnerUser
31744
- * * Display Name: Owner Name
32071
+ * * Display Name: Owner User Name
31745
32072
  * * SQL Data Type: nvarchar(100)
31746
32073
  */
31747
32074
  get OwnerUser() {
@@ -31940,6 +32267,153 @@ MJAIArchitectureEntity = __decorate([
31940
32267
  RegisterClass(BaseEntity, 'MJ: AI Architectures')
31941
32268
  ], MJAIArchitectureEntity);
31942
32269
  export { MJAIArchitectureEntity };
32270
+ /**
32271
+ * MJ: AI Client Tool Definitions - strongly typed entity sub-class
32272
+ * * Schema: __mj
32273
+ * * Base Table: AIClientToolDefinition
32274
+ * * Base View: vwAIClientToolDefinitions
32275
+ * * Primary Key: ID
32276
+ * @extends {BaseEntity}
32277
+ * @class
32278
+ * @public
32279
+ */
32280
+ let MJAIClientToolDefinitionEntity = class MJAIClientToolDefinitionEntity extends BaseEntity {
32281
+ /**
32282
+ * Loads the MJ: AI Client Tool Definitions record from the database
32283
+ * @param ID: string - primary key value to load the MJ: AI Client Tool Definitions record.
32284
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
32285
+ * @returns {Promise<boolean>} - true if successful, false otherwise
32286
+ * @public
32287
+ * @async
32288
+ * @memberof MJAIClientToolDefinitionEntity
32289
+ * @method
32290
+ * @override
32291
+ */
32292
+ async Load(ID, EntityRelationshipsToLoad) {
32293
+ const compositeKey = new CompositeKey();
32294
+ compositeKey.KeyValuePairs.push({ FieldName: 'ID', Value: ID });
32295
+ return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
32296
+ }
32297
+ /**
32298
+ * * Field Name: ID
32299
+ * * Display Name: ID
32300
+ * * SQL Data Type: uniqueidentifier
32301
+ * * Default Value: newsequentialid()
32302
+ */
32303
+ get ID() {
32304
+ return this.Get('ID');
32305
+ }
32306
+ set ID(value) {
32307
+ this.Set('ID', value);
32308
+ }
32309
+ /**
32310
+ * * Field Name: Name
32311
+ * * Display Name: Tool Name
32312
+ * * SQL Data Type: nvarchar(200)
32313
+ * * Description: Unique identifier for the client tool (e.g., NavigateToApp, NavigateToRecord). Used to match tool invocations from the LLM to registered handlers on the client.
32314
+ */
32315
+ get Name() {
32316
+ return this.Get('Name');
32317
+ }
32318
+ set Name(value) {
32319
+ this.Set('Name', value);
32320
+ }
32321
+ /**
32322
+ * * Field Name: Description
32323
+ * * Display Name: Description
32324
+ * * SQL Data Type: nvarchar(MAX)
32325
+ * * Description: Human-readable description of what the tool does. This text is injected into the LLM system prompt so it knows when and how to use the tool.
32326
+ */
32327
+ get Description() {
32328
+ return this.Get('Description');
32329
+ }
32330
+ set Description(value) {
32331
+ this.Set('Description', value);
32332
+ }
32333
+ /**
32334
+ * * Field Name: Category
32335
+ * * Display Name: Category
32336
+ * * SQL Data Type: nvarchar(50)
32337
+ * * Description: Tool category for grouping and filtering (e.g., navigation, form, display, data).
32338
+ */
32339
+ get Category() {
32340
+ return this.Get('Category');
32341
+ }
32342
+ set Category(value) {
32343
+ this.Set('Category', value);
32344
+ }
32345
+ /**
32346
+ * * Field Name: InputSchemaJSON
32347
+ * * Display Name: Input Schema
32348
+ * * SQL Data Type: nvarchar(MAX)
32349
+ * * Description: JSON Schema defining the input parameters the tool accepts. Included in the LLM prompt so it generates valid parameter objects.
32350
+ */
32351
+ get InputSchemaJSON() {
32352
+ return this.Get('InputSchemaJSON');
32353
+ }
32354
+ set InputSchemaJSON(value) {
32355
+ this.Set('InputSchemaJSON', value);
32356
+ }
32357
+ /**
32358
+ * * Field Name: OutputSchemaJSON
32359
+ * * Display Name: Output Schema
32360
+ * * SQL Data Type: nvarchar(MAX)
32361
+ * * Description: JSON Schema describing the return value from the tool. Optional — used for documentation and LLM context.
32362
+ */
32363
+ get OutputSchemaJSON() {
32364
+ return this.Get('OutputSchemaJSON');
32365
+ }
32366
+ set OutputSchemaJSON(value) {
32367
+ this.Set('OutputSchemaJSON', value);
32368
+ }
32369
+ /**
32370
+ * * Field Name: DefaultTimeoutMs
32371
+ * * Display Name: Default Timeout (ms)
32372
+ * * SQL Data Type: int
32373
+ * * Default Value: 30000
32374
+ * * Description: Default timeout in milliseconds for this tool. Can be overridden per-invocation by the LLM or per-run by execution params. Default is 30000ms (30 seconds).
32375
+ */
32376
+ get DefaultTimeoutMs() {
32377
+ return this.Get('DefaultTimeoutMs');
32378
+ }
32379
+ set DefaultTimeoutMs(value) {
32380
+ this.Set('DefaultTimeoutMs', value);
32381
+ }
32382
+ /**
32383
+ * * Field Name: RequiresContextType
32384
+ * * Display Name: Required Context Type
32385
+ * * SQL Data Type: nvarchar(100)
32386
+ * * Description: When set, the client only sends this tool to the server when the user is in the specified context (e.g., entity-form, dashboard, search). Null means the tool is always available.
32387
+ */
32388
+ get RequiresContextType() {
32389
+ return this.Get('RequiresContextType');
32390
+ }
32391
+ set RequiresContextType(value) {
32392
+ this.Set('RequiresContextType', value);
32393
+ }
32394
+ /**
32395
+ * * Field Name: __mj_CreatedAt
32396
+ * * Display Name: Created At
32397
+ * * SQL Data Type: datetimeoffset
32398
+ * * Default Value: getutcdate()
32399
+ */
32400
+ get __mj_CreatedAt() {
32401
+ return this.Get('__mj_CreatedAt');
32402
+ }
32403
+ /**
32404
+ * * Field Name: __mj_UpdatedAt
32405
+ * * Display Name: Updated At
32406
+ * * SQL Data Type: datetimeoffset
32407
+ * * Default Value: getutcdate()
32408
+ */
32409
+ get __mj_UpdatedAt() {
32410
+ return this.Get('__mj_UpdatedAt');
32411
+ }
32412
+ };
32413
+ MJAIClientToolDefinitionEntity = __decorate([
32414
+ RegisterClass(BaseEntity, 'MJ: AI Client Tool Definitions')
32415
+ ], MJAIClientToolDefinitionEntity);
32416
+ export { MJAIClientToolDefinitionEntity };
31943
32417
  /**
31944
32418
  * MJ: AI Configuration Params - strongly typed entity sub-class
31945
32419
  * * Schema: __mj
@@ -39747,6 +40221,11 @@ export { MJApplicationSettingEntity };
39747
40221
  * @public
39748
40222
  */
39749
40223
  let MJApplicationEntity = class MJApplicationEntity extends BaseEntity {
40224
+ constructor() {
40225
+ super(...arguments);
40226
+ this._DefaultNavItemsObject_cached = undefined;
40227
+ this._DefaultNavItemsObject_lastRaw = null;
40228
+ }
39750
40229
  /**
39751
40230
  * Loads the MJ: Applications record from the database
39752
40231
  * @param ID: string - primary key value to load the MJ: Applications record.
@@ -39868,6 +40347,7 @@ let MJApplicationEntity = class MJApplicationEntity extends BaseEntity {
39868
40347
  * * Field Name: DefaultNavItems
39869
40348
  * * Display Name: Default Nav Items
39870
40349
  * * SQL Data Type: nvarchar(MAX)
40350
+ * * JSON Type: Array<MJApplicationEntity_IDefaultNavItem>
39871
40351
  * * Description: JSON array of default navigation items for this application. Parsed by BaseApplication.GetNavItems()
39872
40352
  */
39873
40353
  get DefaultNavItems() {
@@ -39877,6 +40357,24 @@ let MJApplicationEntity = class MJApplicationEntity extends BaseEntity {
39877
40357
  this.Set('DefaultNavItems', value);
39878
40358
  }
39879
40359
  /**
40360
+ * Typed accessor for DefaultNavItems — returns parsed JSON as Array<MJApplicationEntity_IDefaultNavItem>.
40361
+ * Uses lazy parsing with cache invalidation when the underlying raw value changes.
40362
+ */
40363
+ get DefaultNavItemsObject() {
40364
+ const raw = this.Get('DefaultNavItems');
40365
+ if (raw !== this._DefaultNavItemsObject_lastRaw) {
40366
+ this._DefaultNavItemsObject_cached = raw ? JSON.parse(raw) : null;
40367
+ this._DefaultNavItemsObject_lastRaw = raw;
40368
+ }
40369
+ return this._DefaultNavItemsObject_cached;
40370
+ }
40371
+ set DefaultNavItemsObject(value) {
40372
+ const raw = value ? JSON.stringify(value) : null;
40373
+ this.Set('DefaultNavItems', raw);
40374
+ this._DefaultNavItemsObject_cached = value;
40375
+ this._DefaultNavItemsObject_lastRaw = raw;
40376
+ }
40377
+ /**
39880
40378
  * * Field Name: ClassName
39881
40379
  * * Display Name: Class Name
39882
40380
  * * SQL Data Type: nvarchar(255)
@@ -46029,6 +46527,19 @@ let MJContentItemTagEntity = class MJContentItemTagEntity extends BaseEntity {
46029
46527
  return this.Get('__mj_UpdatedAt');
46030
46528
  }
46031
46529
  /**
46530
+ * * Field Name: Weight
46531
+ * * Display Name: Weight
46532
+ * * SQL Data Type: numeric(5, 4)
46533
+ * * Default Value: 1.0
46534
+ * * Description: Relevance weight for this tag (0.0-1.0). 1.0 = highly relevant central topic, 0.5 = moderately relevant, 0.1 = tangentially related. Assigned by the LLM during autotagging.
46535
+ */
46536
+ get Weight() {
46537
+ return this.Get('Weight');
46538
+ }
46539
+ set Weight(value) {
46540
+ this.Set('Weight', value);
46541
+ }
46542
+ /**
46032
46543
  * * Field Name: Item
46033
46544
  * * Display Name: Item
46034
46545
  * * SQL Data Type: nvarchar(250)
@@ -46738,7 +47249,7 @@ let MJContentSourceEntity = class MJContentSourceEntity extends BaseEntity {
46738
47249
  }
46739
47250
  /**
46740
47251
  * * Field Name: ContentTypeID
46741
- * * Display Name: Content Type ID
47252
+ * * Display Name: Content Type
46742
47253
  * * SQL Data Type: uniqueidentifier
46743
47254
  * * Related Entity/Foreign Key: MJ: Content Types (vwContentTypes.ID)
46744
47255
  */
@@ -46750,7 +47261,7 @@ let MJContentSourceEntity = class MJContentSourceEntity extends BaseEntity {
46750
47261
  }
46751
47262
  /**
46752
47263
  * * Field Name: ContentSourceTypeID
46753
- * * Display Name: Content Source Type ID
47264
+ * * Display Name: Content Source Type
46754
47265
  * * SQL Data Type: uniqueidentifier
46755
47266
  * * Related Entity/Foreign Key: MJ: Content Source Types (vwContentSourceTypes.ID)
46756
47267
  */
@@ -46762,7 +47273,7 @@ let MJContentSourceEntity = class MJContentSourceEntity extends BaseEntity {
46762
47273
  }
46763
47274
  /**
46764
47275
  * * Field Name: ContentFileTypeID
46765
- * * Display Name: Content File Type ID
47276
+ * * Display Name: Content File Type
46766
47277
  * * SQL Data Type: uniqueidentifier
46767
47278
  * * Related Entity/Foreign Key: MJ: Content File Types (vwContentFileTypes.ID)
46768
47279
  */
@@ -46803,6 +47314,32 @@ let MJContentSourceEntity = class MJContentSourceEntity extends BaseEntity {
46803
47314
  return this.Get('__mj_UpdatedAt');
46804
47315
  }
46805
47316
  /**
47317
+ * * Field Name: EmbeddingModelID
47318
+ * * Display Name: Embedding Model
47319
+ * * SQL Data Type: uniqueidentifier
47320
+ * * Related Entity/Foreign Key: MJ: AI Models (vwAIModels.ID)
47321
+ * * Description: Per-source override for the AI embedding model. When NULL, falls back to the ContentType default.
47322
+ */
47323
+ get EmbeddingModelID() {
47324
+ return this.Get('EmbeddingModelID');
47325
+ }
47326
+ set EmbeddingModelID(value) {
47327
+ this.Set('EmbeddingModelID', value);
47328
+ }
47329
+ /**
47330
+ * * Field Name: VectorIndexID
47331
+ * * Display Name: Vector Index
47332
+ * * SQL Data Type: uniqueidentifier
47333
+ * * Related Entity/Foreign Key: MJ: Vector Indexes (vwVectorIndexes.ID)
47334
+ * * Description: Per-source override for the vector index. When NULL, falls back to the ContentType default.
47335
+ */
47336
+ get VectorIndexID() {
47337
+ return this.Get('VectorIndexID');
47338
+ }
47339
+ set VectorIndexID(value) {
47340
+ this.Set('VectorIndexID', value);
47341
+ }
47342
+ /**
46806
47343
  * * Field Name: ContentType
46807
47344
  * * Display Name: Content Type
46808
47345
  * * SQL Data Type: nvarchar(255)
@@ -46826,6 +47363,22 @@ let MJContentSourceEntity = class MJContentSourceEntity extends BaseEntity {
46826
47363
  get ContentFileType() {
46827
47364
  return this.Get('ContentFileType');
46828
47365
  }
47366
+ /**
47367
+ * * Field Name: EmbeddingModel
47368
+ * * Display Name: Embedding Model
47369
+ * * SQL Data Type: nvarchar(50)
47370
+ */
47371
+ get EmbeddingModel() {
47372
+ return this.Get('EmbeddingModel');
47373
+ }
47374
+ /**
47375
+ * * Field Name: VectorIndex
47376
+ * * Display Name: Vector Index
47377
+ * * SQL Data Type: nvarchar(255)
47378
+ */
47379
+ get VectorIndex() {
47380
+ return this.Get('VectorIndex');
47381
+ }
46829
47382
  };
46830
47383
  MJContentSourceEntity = __decorate([
46831
47384
  RegisterClass(BaseEntity, 'MJ: Content Sources')
@@ -47004,7 +47557,7 @@ let MJContentTypeEntity = class MJContentTypeEntity extends BaseEntity {
47004
47557
  }
47005
47558
  /**
47006
47559
  * * Field Name: AIModelID
47007
- * * Display Name: AIModel ID
47560
+ * * Display Name: AI Model
47008
47561
  * * SQL Data Type: uniqueidentifier
47009
47562
  * * Related Entity/Foreign Key: MJ: AI Models (vwAIModels.ID)
47010
47563
  */
@@ -47016,7 +47569,7 @@ let MJContentTypeEntity = class MJContentTypeEntity extends BaseEntity {
47016
47569
  }
47017
47570
  /**
47018
47571
  * * Field Name: MinTags
47019
- * * Display Name: Min Tags
47572
+ * * Display Name: Minimum Tags
47020
47573
  * * SQL Data Type: int
47021
47574
  * * Description: Minimum number of tags that must be applied to content of this type.
47022
47575
  */
@@ -47028,7 +47581,7 @@ let MJContentTypeEntity = class MJContentTypeEntity extends BaseEntity {
47028
47581
  }
47029
47582
  /**
47030
47583
  * * Field Name: MaxTags
47031
- * * Display Name: Max Tags
47584
+ * * Display Name: Maximum Tags
47032
47585
  * * SQL Data Type: int
47033
47586
  * * Description: Maximum number of tags allowed on content of this type.
47034
47587
  */
@@ -47057,13 +47610,55 @@ let MJContentTypeEntity = class MJContentTypeEntity extends BaseEntity {
47057
47610
  return this.Get('__mj_UpdatedAt');
47058
47611
  }
47059
47612
  /**
47613
+ * * Field Name: EmbeddingModelID
47614
+ * * Display Name: Embedding Model
47615
+ * * SQL Data Type: uniqueidentifier
47616
+ * * Related Entity/Foreign Key: MJ: AI Models (vwAIModels.ID)
47617
+ * * Description: Default AI embedding model for vectorizing content items of this type. Sources can override per-source. If NULL, uses the first available embedding model.
47618
+ */
47619
+ get EmbeddingModelID() {
47620
+ return this.Get('EmbeddingModelID');
47621
+ }
47622
+ set EmbeddingModelID(value) {
47623
+ this.Set('EmbeddingModelID', value);
47624
+ }
47625
+ /**
47626
+ * * Field Name: VectorIndexID
47627
+ * * Display Name: Vector Index
47628
+ * * SQL Data Type: uniqueidentifier
47629
+ * * Related Entity/Foreign Key: MJ: Vector Indexes (vwVectorIndexes.ID)
47630
+ * * Description: Default vector index for storing embeddings of this content type. Sources can override per-source. If NULL, uses the first available vector index.
47631
+ */
47632
+ get VectorIndexID() {
47633
+ return this.Get('VectorIndexID');
47634
+ }
47635
+ set VectorIndexID(value) {
47636
+ this.Set('VectorIndexID', value);
47637
+ }
47638
+ /**
47060
47639
  * * Field Name: AIModel
47061
- * * Display Name: AIModel
47640
+ * * Display Name: AI Model Name
47062
47641
  * * SQL Data Type: nvarchar(50)
47063
47642
  */
47064
47643
  get AIModel() {
47065
47644
  return this.Get('AIModel');
47066
47645
  }
47646
+ /**
47647
+ * * Field Name: EmbeddingModel
47648
+ * * Display Name: Embedding Model Name
47649
+ * * SQL Data Type: nvarchar(50)
47650
+ */
47651
+ get EmbeddingModel() {
47652
+ return this.Get('EmbeddingModel');
47653
+ }
47654
+ /**
47655
+ * * Field Name: VectorIndex
47656
+ * * Display Name: Vector Index Name
47657
+ * * SQL Data Type: nvarchar(255)
47658
+ */
47659
+ get VectorIndex() {
47660
+ return this.Get('VectorIndex');
47661
+ }
47067
47662
  };
47068
47663
  MJContentTypeEntity = __decorate([
47069
47664
  RegisterClass(BaseEntity, 'MJ: Content Types')
@@ -51415,7 +52010,7 @@ let MJDuplicateRunDetailMatchEntity = class MJDuplicateRunDetailMatchEntity exte
51415
52010
  }
51416
52011
  /**
51417
52012
  * * Field Name: DuplicateRunDetailID
51418
- * * Display Name: Duplicate Run Detail
52013
+ * * Display Name: Duplicate Run Detail ID
51419
52014
  * * SQL Data Type: uniqueidentifier
51420
52015
  * * Related Entity/Foreign Key: MJ: Duplicate Run Details (vwDuplicateRunDetails.ID)
51421
52016
  */
@@ -51444,7 +52039,7 @@ let MJDuplicateRunDetailMatchEntity = class MJDuplicateRunDetailMatchEntity exte
51444
52039
  }
51445
52040
  /**
51446
52041
  * * Field Name: MatchRecordID
51447
- * * Display Name: Match Record
52042
+ * * Display Name: Match Record ID
51448
52043
  * * SQL Data Type: nvarchar(500)
51449
52044
  * * Description: The ID of the record identified as a potential duplicate match.
51450
52045
  */
@@ -51513,7 +52108,7 @@ let MJDuplicateRunDetailMatchEntity = class MJDuplicateRunDetailMatchEntity exte
51513
52108
  }
51514
52109
  /**
51515
52110
  * * Field Name: RecordMergeLogID
51516
- * * Display Name: Record Merge Log
52111
+ * * Display Name: Record Merge Log ID
51517
52112
  * * SQL Data Type: uniqueidentifier
51518
52113
  * * Related Entity/Foreign Key: MJ: Record Merge Logs (vwRecordMergeLogs.ID)
51519
52114
  */
@@ -51573,6 +52168,18 @@ let MJDuplicateRunDetailMatchEntity = class MJDuplicateRunDetailMatchEntity exte
51573
52168
  return this.Get('__mj_UpdatedAt');
51574
52169
  }
51575
52170
  /**
52171
+ * * Field Name: RecordMetadata
52172
+ * * Display Name: Record Metadata
52173
+ * * SQL Data Type: nvarchar(MAX)
52174
+ * * Description: JSON metadata snapshot of the matched record from the vector database at detection time. Contains display fields (Name, Description, EntityIcon, etc.) for rich UI rendering without additional lookups.
52175
+ */
52176
+ get RecordMetadata() {
52177
+ return this.Get('RecordMetadata');
52178
+ }
52179
+ set RecordMetadata(value) {
52180
+ this.Set('RecordMetadata', value);
52181
+ }
52182
+ /**
51576
52183
  * * Field Name: DuplicateRunDetail
51577
52184
  * * Display Name: Duplicate Run Detail
51578
52185
  * * SQL Data Type: nvarchar(500)
@@ -51635,7 +52242,7 @@ let MJDuplicateRunDetailEntity = class MJDuplicateRunDetailEntity extends BaseEn
51635
52242
  }
51636
52243
  /**
51637
52244
  * * Field Name: DuplicateRunID
51638
- * * Display Name: Duplicate Run ID
52245
+ * * Display Name: Duplicate Run
51639
52246
  * * SQL Data Type: uniqueidentifier
51640
52247
  * * Related Entity/Foreign Key: MJ: Duplicate Runs (vwDuplicateRuns.ID)
51641
52248
  */
@@ -51647,7 +52254,7 @@ let MJDuplicateRunDetailEntity = class MJDuplicateRunDetailEntity extends BaseEn
51647
52254
  }
51648
52255
  /**
51649
52256
  * * Field Name: RecordID
51650
- * * Display Name: Record ID
52257
+ * * Display Name: Source Record
51651
52258
  * * SQL Data Type: nvarchar(500)
51652
52259
  * * Description: The ID of the record being analyzed for duplicates.
51653
52260
  */
@@ -51750,8 +52357,20 @@ let MJDuplicateRunDetailEntity = class MJDuplicateRunDetailEntity extends BaseEn
51750
52357
  return this.Get('__mj_UpdatedAt');
51751
52358
  }
51752
52359
  /**
52360
+ * * Field Name: RecordMetadata
52361
+ * * Display Name: Record Metadata
52362
+ * * SQL Data Type: nvarchar(MAX)
52363
+ * * Description: JSON metadata snapshot of the source record from the vector database at detection time. Contains display fields (Name, Description, EntityIcon, etc.) for rich UI rendering without additional lookups.
52364
+ */
52365
+ get RecordMetadata() {
52366
+ return this.Get('RecordMetadata');
52367
+ }
52368
+ set RecordMetadata(value) {
52369
+ this.Set('RecordMetadata', value);
52370
+ }
52371
+ /**
51753
52372
  * * Field Name: DuplicateRun
51754
- * * Display Name: Duplicate Run
52373
+ * * Display Name: Run Name
51755
52374
  * * SQL Data Type: nvarchar(255)
51756
52375
  */
51757
52376
  get DuplicateRun() {
@@ -51831,6 +52450,7 @@ let MJDuplicateRunEntity = class MJDuplicateRunEntity extends BaseEntity {
51831
52450
  * * Display Name: Source List
51832
52451
  * * SQL Data Type: uniqueidentifier
51833
52452
  * * Related Entity/Foreign Key: MJ: Lists (vwLists.ID)
52453
+ * * Description: Optional List ID to narrow the scope of duplicate detection. When NULL, all records in the entity are scanned. When set, only records in the specified list are checked for duplicates.
51834
52454
  */
51835
52455
  get SourceListID() {
51836
52456
  return this.Get('SourceListID');
@@ -55480,7 +56100,7 @@ let MJEntityDocumentEntity = class MJEntityDocumentEntity extends BaseEntity {
55480
56100
  * * Field Name: PotentialMatchThreshold
55481
56101
  * * Display Name: Potential Match Threshold
55482
56102
  * * SQL Data Type: numeric(12, 11)
55483
- * * Default Value: 1
56103
+ * * Default Value: 0.7
55484
56104
  * * Description: Value between 0 and 1 that determines what is considered a potential matching record. Value must be <= AbsoluteMatchThreshold. This is primarily used for duplicate detection but can be used for other applications as well where matching is relevant.
55485
56105
  */
55486
56106
  get PotentialMatchThreshold() {
@@ -55493,7 +56113,7 @@ let MJEntityDocumentEntity = class MJEntityDocumentEntity extends BaseEntity {
55493
56113
  * * Field Name: AbsoluteMatchThreshold
55494
56114
  * * Display Name: Absolute Match Threshold
55495
56115
  * * SQL Data Type: numeric(12, 11)
55496
- * * Default Value: 1
56116
+ * * Default Value: 0.95
55497
56117
  * * Description: Value between 0 and 1 that determines what is considered an absolute matching record. Value must be >= PotentialMatchThreshold. This is primarily used for duplicate detection but can be used for other applications as well where matching is relevant.
55498
56118
  */
55499
56119
  get AbsoluteMatchThreshold() {
@@ -56481,6 +57101,43 @@ let MJEntityFieldEntity = class MJEntityFieldEntity extends BaseEntity {
56481
57101
  this.Set('RelatedEntityJoinFields', value);
56482
57102
  }
56483
57103
  /**
57104
+ * * Field Name: JSONType
57105
+ * * Display Name: JSON Type
57106
+ * * SQL Data Type: nvarchar(255)
57107
+ * * Description: The name of the TypeScript interface/type for this JSON field. When set, CodeGen emits a strongly-typed Object-suffixed accessor using this type instead of only the default string getter/setter.
57108
+ */
57109
+ get JSONType() {
57110
+ return this.Get('JSONType');
57111
+ }
57112
+ set JSONType(value) {
57113
+ this.Set('JSONType', value);
57114
+ }
57115
+ /**
57116
+ * * Field Name: JSONTypeIsArray
57117
+ * * Display Name: JSON Type Is Array
57118
+ * * SQL Data Type: bit
57119
+ * * Default Value: 0
57120
+ * * Description: If true, the field holds a JSON array of JSONType items. The Object accessor returns Array<JSONType> | null and the setter accepts Array<JSONType> | null.
57121
+ */
57122
+ get JSONTypeIsArray() {
57123
+ return this.Get('JSONTypeIsArray');
57124
+ }
57125
+ set JSONTypeIsArray(value) {
57126
+ this.Set('JSONTypeIsArray', value);
57127
+ }
57128
+ /**
57129
+ * * Field Name: JSONTypeDefinition
57130
+ * * Display Name: JSON Type Definition
57131
+ * * SQL Data Type: nvarchar(MAX)
57132
+ * * Description: Raw TypeScript code emitted by CodeGen above the entity class definition. Typically contains the interface/type definition referenced by JSONType. Can include imports, multiple types, or any valid TypeScript.
57133
+ */
57134
+ get JSONTypeDefinition() {
57135
+ return this.Get('JSONTypeDefinition');
57136
+ }
57137
+ set JSONTypeDefinition(value) {
57138
+ this.Set('JSONTypeDefinition', value);
57139
+ }
57140
+ /**
56484
57141
  * * Field Name: FieldCodeName
56485
57142
  * * Display Name: Field Code Name
56486
57143
  * * SQL Data Type: nvarchar(MAX)