@memberjunction/core-entities 5.48.0 → 5.50.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.
Files changed (42) hide show
  1. package/dist/custom/MJListEntityExtended.d.ts +27 -0
  2. package/dist/custom/MJListEntityExtended.d.ts.map +1 -0
  3. package/dist/custom/MJListEntityExtended.js +52 -0
  4. package/dist/custom/MJListEntityExtended.js.map +1 -0
  5. package/dist/custom/Permissions/BaseShareEntityExtended.d.ts.map +1 -1
  6. package/dist/custom/Permissions/BaseShareEntityExtended.js +6 -1
  7. package/dist/custom/Permissions/BaseShareEntityExtended.js.map +1 -1
  8. package/dist/custom/Permissions/MJArtifactPermissionEntityExtended.d.ts.map +1 -1
  9. package/dist/custom/Permissions/MJArtifactPermissionEntityExtended.js +6 -4
  10. package/dist/custom/Permissions/MJArtifactPermissionEntityExtended.js.map +1 -1
  11. package/dist/custom/Permissions/MJCollectionPermissionEntityExtended.d.ts.map +1 -1
  12. package/dist/custom/Permissions/MJCollectionPermissionEntityExtended.js +4 -2
  13. package/dist/custom/Permissions/MJCollectionPermissionEntityExtended.js.map +1 -1
  14. package/dist/engines/PermissionEngine.d.ts +14 -0
  15. package/dist/engines/PermissionEngine.d.ts.map +1 -1
  16. package/dist/engines/PermissionEngine.js +30 -34
  17. package/dist/engines/PermissionEngine.js.map +1 -1
  18. package/dist/engines/UserInfoEngine.d.ts +13 -0
  19. package/dist/engines/UserInfoEngine.d.ts.map +1 -1
  20. package/dist/engines/UserInfoEngine.js +23 -5
  21. package/dist/engines/UserInfoEngine.js.map +1 -1
  22. package/dist/engines/artifacts.d.ts +87 -12
  23. package/dist/engines/artifacts.d.ts.map +1 -1
  24. package/dist/engines/artifacts.js +140 -35
  25. package/dist/engines/artifacts.js.map +1 -1
  26. package/dist/engines/conversations.d.ts +128 -0
  27. package/dist/engines/conversations.d.ts.map +1 -1
  28. package/dist/engines/conversations.js +152 -2
  29. package/dist/engines/conversations.js.map +1 -1
  30. package/dist/engines/knowledgeHubMetadata.d.ts +26 -4
  31. package/dist/engines/knowledgeHubMetadata.d.ts.map +1 -1
  32. package/dist/engines/knowledgeHubMetadata.js +70 -16
  33. package/dist/engines/knowledgeHubMetadata.js.map +1 -1
  34. package/dist/generated/entity_subclasses.d.ts +1612 -109
  35. package/dist/generated/entity_subclasses.d.ts.map +1 -1
  36. package/dist/generated/entity_subclasses.js +2021 -174
  37. package/dist/generated/entity_subclasses.js.map +1 -1
  38. package/dist/index.d.ts +1 -0
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -0
  41. package/dist/index.js.map +1 -1
  42. package/package.json +6 -6
@@ -2688,7 +2688,7 @@ export const MJAIAgentRunStepSchema = z.object({
2688
2688
  * * Display Name: Step Number
2689
2689
  * * SQL Data Type: int
2690
2690
  * * Description: Sequential number of this step within the agent run, starting from 1`),
2691
- StepType: z.union([z.literal('Actions'), z.literal('Chat'), z.literal('Decision'), z.literal('ForEach'), z.literal('Plan'), z.literal('Prompt'), z.literal('Skill'), z.literal('Sub-Agent'), z.literal('Tool'), z.literal('Validation'), z.literal('While')]).describe(`
2691
+ StepType: z.union([z.literal('Actions'), z.literal('Chat'), z.literal('Compaction'), z.literal('Decision'), z.literal('ForEach'), z.literal('Plan'), z.literal('Prompt'), z.literal('Skill'), z.literal('Sub-Agent'), z.literal('Tool'), z.literal('Validation'), z.literal('While')]).describe(`
2692
2692
  * * Field Name: StepType
2693
2693
  * * Display Name: Step Type
2694
2694
  * * SQL Data Type: nvarchar(50)
@@ -2697,6 +2697,7 @@ export const MJAIAgentRunStepSchema = z.object({
2697
2697
  * * Possible Values
2698
2698
  * * Actions
2699
2699
  * * Chat
2700
+ * * Compaction
2700
2701
  * * Decision
2701
2702
  * * ForEach
2702
2703
  * * Plan
@@ -4018,7 +4019,7 @@ export const MJAIAgentTypeSchema = z.object({
4018
4019
  * * Description: Reference to the AI Prompt that contains the system-level instructions for all agents of this type. This prompt will be blended with individual agent prompts.`),
4019
4020
  IsActive: z.boolean().describe(`
4020
4021
  * * Field Name: IsActive
4021
- * * Display Name: Is Active
4022
+ * * Display Name: Active
4022
4023
  * * SQL Data Type: bit
4023
4024
  * * Default Value: 1
4024
4025
  * * Description: Indicates whether this agent type is available for use. Inactive types cannot be assigned to new agents.`),
@@ -4060,7 +4061,7 @@ export const MJAIAgentTypeSchema = z.object({
4060
4061
  * * Description: Determines whether the custom form section (specified by UIFormSectionClass) should be expanded by default when the AI Agent form loads. True means the section starts expanded, False means it starts collapsed. Only applies when UIFormSectionClass is specified. Defaults to 1 (expanded).`),
4061
4062
  PromptParamsSchema: z.string().nullable().describe(`
4062
4063
  * * Field Name: PromptParamsSchema
4063
- * * Display Name: Prompt Parameters Schema
4064
+ * * Display Name: Prompt Params Schema
4064
4065
  * * SQL Data Type: nvarchar(MAX)
4065
4066
  * * Description: JSON Schema defining the available prompt parameters for this agent type. Includes property definitions with types, defaults, and descriptions. Used by agents of this type to customize which prompt sections are included in the system prompt. The schema follows JSON Schema draft-07 format.`),
4066
4067
  AssignmentStrategy: z.string().nullable().describe(`
@@ -4070,13 +4071,13 @@ export const MJAIAgentTypeSchema = z.object({
4070
4071
  * * Description: JSON-serialized AgentRequestAssignmentStrategy defining the default assignment strategy for all agents of this type. Overridden by per-invocation or category-level strategies in the resolution chain.`),
4071
4072
  DefaultStorageAccountID: z.string().nullable().describe(`
4072
4073
  * * Field Name: DefaultStorageAccountID
4073
- * * Display Name: Default Storage Account
4074
+ * * Display Name: Default Storage Account ID
4074
4075
  * * SQL Data Type: uniqueidentifier
4075
4076
  * * Related Entity/Foreign Key: MJ: File Storage Accounts (vwFileStorageAccounts.ID)
4076
4077
  * * Description: Default file storage account for agents of this type. Lowest priority in the resolution chain (Type → Category tree → Agent → Runtime override). When set, all agents of this type use this storage account unless overridden at a more specific level. FK to FileStorageAccount.`),
4077
4078
  ConfigSchema: z.string().nullable().describe(`
4078
4079
  * * Field Name: ConfigSchema
4079
- * * Display Name: Configuration Schema
4080
+ * * Display Name: Config Schema
4080
4081
  * * SQL Data Type: nvarchar(MAX)
4081
4082
  * * Description: JSON Schema (draft-07) describing the shape of TypeConfiguration payloads on agents of this type. When present, agent saves validate their TypeConfiguration against it server-side (MJAIAgentEntityServer.ValidateAsync); null = TypeConfiguration is freeform for this type.`),
4082
4083
  DefaultConfiguration: z.string().nullable().describe(`
@@ -4084,14 +4085,61 @@ export const MJAIAgentTypeSchema = z.object({
4084
4085
  * * Display Name: Default Configuration
4085
4086
  * * SQL Data Type: nvarchar(MAX)
4086
4087
  * * Description: Type-level DEFAULT configuration JSON for agents of this type — the base layer of the effective-configuration merge: type DefaultConfiguration <- agent TypeConfiguration <- runtime overrides (later layers win per key, deep-merged). Must itself conform to ConfigSchema when one is published. Null = no type defaults.`),
4088
+ ContextCompressionMessageThreshold: z.number().nullable().describe(`
4089
+ * * Field Name: ContextCompressionMessageThreshold
4090
+ * * Display Name: Context Compression Message Threshold
4091
+ * * SQL Data Type: int
4092
+ * * Description: Type-level default for the in-turn context-compression message-count threshold. Overridable per agent via AIAgent.ContextCompressionMessageThreshold.`),
4093
+ ContextCompressionPromptID: z.string().nullable().describe(`
4094
+ * * Field Name: ContextCompressionPromptID
4095
+ * * Display Name: Context Compression Prompt ID
4096
+ * * SQL Data Type: uniqueidentifier
4097
+ * * Related Entity/Foreign Key: MJ: AI Prompts (vwAIPrompts.ID)
4098
+ * * Description: Type-level default prompt used for in-turn context compression. Overridable per agent via AIAgent.ContextCompressionPromptID.`),
4099
+ ContextCompressionMessageRetentionCount: z.number().nullable().describe(`
4100
+ * * Field Name: ContextCompressionMessageRetentionCount
4101
+ * * Display Name: Context Compression Message Retention Count
4102
+ * * SQL Data Type: int
4103
+ * * Description: Type-level default for the number of most-recent messages kept uncompressed (the "hot tail") when context compression is applied. Overridable per agent via AIAgent.ContextCompressionMessageRetentionCount.`),
4104
+ ContextWindowMaxTokens: z.number().nullable().describe(`
4105
+ * * Field Name: ContextWindowMaxTokens
4106
+ * * Display Name: Context Window Max Tokens
4107
+ * * SQL Data Type: int
4108
+ * * Description: Type-level default effective working-context budget, in tokens. Null means use the selected model's MaxInputTokens. The resolved value is clamped to the model's limit at runtime (a warning is logged if it would exceed it). Overridable per agent via AIAgent.ContextWindowMaxTokens.`),
4109
+ CompactionTriggerPercent: z.number().describe(`
4110
+ * * Field Name: CompactionTriggerPercent
4111
+ * * Display Name: Compaction Trigger Percent
4112
+ * * SQL Data Type: int
4113
+ * * Default Value: 75
4114
+ * * Description: Type-level default: the percentage of the effective context budget at which cross-turn conversation compaction is triggered. Defaults to 75. Overridable per agent via AIAgent.CompactionTriggerPercent.`),
4115
+ CompactionTargetPercent: z.number().describe(`
4116
+ * * Field Name: CompactionTargetPercent
4117
+ * * Display Name: Compaction Target Percent
4118
+ * * SQL Data Type: int
4119
+ * * Default Value: 30
4120
+ * * Description: Type-level default: the target percentage of the effective context budget to reduce to after a cross-turn compaction. Defaults to 30. Overridable per agent via AIAgent.CompactionTargetPercent.`),
4121
+ ConversationSummaryPromptID: z.string().nullable().describe(`
4122
+ * * Field Name: ConversationSummaryPromptID
4123
+ * * Display Name: Conversation Summary Prompt ID
4124
+ * * SQL Data Type: uniqueidentifier
4125
+ * * Related Entity/Foreign Key: MJ: AI Prompts (vwAIPrompts.ID)
4126
+ * * Description: Type-level default prompt used for cross-turn conversation compaction (the durable summary baseline). Distinct from ContextCompressionPromptID, which governs in-turn compression. Overridable per agent via AIAgent.ConversationSummaryPromptID.`),
4087
4127
  SystemPrompt: z.string().nullable().describe(`
4088
4128
  * * Field Name: SystemPrompt
4089
- * * Display Name: System Prompt Content
4129
+ * * Display Name: System Prompt
4090
4130
  * * SQL Data Type: nvarchar(255)`),
4091
4131
  DefaultStorageAccount: z.string().nullable().describe(`
4092
4132
  * * Field Name: DefaultStorageAccount
4093
- * * Display Name: Default Storage Account Name
4133
+ * * Display Name: Default Storage Account
4094
4134
  * * SQL Data Type: nvarchar(200)`),
4135
+ ContextCompressionPrompt: z.string().nullable().describe(`
4136
+ * * Field Name: ContextCompressionPrompt
4137
+ * * Display Name: Context Compression Prompt
4138
+ * * SQL Data Type: nvarchar(255)`),
4139
+ ConversationSummaryPrompt: z.string().nullable().describe(`
4140
+ * * Field Name: ConversationSummaryPrompt
4141
+ * * Display Name: Conversation Summary Prompt
4142
+ * * SQL Data Type: nvarchar(255)`),
4095
4143
  });
4096
4144
  /**
4097
4145
  * zod schema definition for the entity MJ: AI Agents
@@ -4130,7 +4178,7 @@ export const MJAIAgentSchema = z.object({
4130
4178
  * * Default Value: getutcdate()`),
4131
4179
  ParentID: z.string().nullable().describe(`
4132
4180
  * * Field Name: ParentID
4133
- * * Display Name: Parent Agent
4181
+ * * Display Name: Parent
4134
4182
  * * SQL Data Type: uniqueidentifier
4135
4183
  * * Related Entity/Foreign Key: MJ: AI Agents (vwAIAgents.ID)
4136
4184
  * * Description: References the parent agent in the hierarchical structure. If NULL, this is a root (top-level) agent.`),
@@ -4164,22 +4212,22 @@ export const MJAIAgentSchema = z.object({
4164
4212
  * * Description: When true, enables automatic compression of conversation context when the message threshold is reached.`),
4165
4213
  ContextCompressionMessageThreshold: z.number().nullable().describe(`
4166
4214
  * * Field Name: ContextCompressionMessageThreshold
4167
- * * Display Name: Compression Message Threshold
4215
+ * * Display Name: Context Compression Message Threshold
4168
4216
  * * SQL Data Type: int
4169
4217
  * * Description: Number of messages that triggers context compression when EnableContextCompression is true.`),
4170
4218
  ContextCompressionPromptID: z.string().nullable().describe(`
4171
4219
  * * Field Name: ContextCompressionPromptID
4172
- * * Display Name: Compression Prompt
4220
+ * * Display Name: Context Compression Prompt ID
4173
4221
  * * SQL Data Type: uniqueidentifier
4174
4222
  * * Related Entity/Foreign Key: MJ: AI Prompts (vwAIPrompts.ID)`),
4175
4223
  ContextCompressionMessageRetentionCount: z.number().nullable().describe(`
4176
4224
  * * Field Name: ContextCompressionMessageRetentionCount
4177
- * * Display Name: Compression Retention Count
4225
+ * * Display Name: Context Compression Message Retention Count
4178
4226
  * * SQL Data Type: int
4179
4227
  * * Description: Number of recent messages to keep uncompressed when context compression is applied.`),
4180
4228
  TypeID: z.string().nullable().describe(`
4181
4229
  * * Field Name: TypeID
4182
- * * Display Name: Agent Type
4230
+ * * Display Name: Type
4183
4231
  * * SQL Data Type: uniqueidentifier
4184
4232
  * * Related Entity/Foreign Key: MJ: AI Agent Types (vwAIAgentTypes.ID)
4185
4233
  * * Description: Reference to the AIAgentType that defines the category and system-level behavior for this agent. Cannot be null.`),
@@ -4216,25 +4264,25 @@ export const MJAIAgentSchema = z.object({
4216
4264
  * * Description: Controls whether model selection is driven by the Agent Type's system prompt or the Agent's specific prompt. Default is Agent Type for backward compatibility.`),
4217
4265
  PayloadDownstreamPaths: z.string().describe(`
4218
4266
  * * Field Name: PayloadDownstreamPaths
4219
- * * Display Name: Downstream Payload Paths
4267
+ * * Display Name: Payload Downstream Paths
4220
4268
  * * SQL Data Type: nvarchar(MAX)
4221
4269
  * * Default Value: ["*"]
4222
4270
  * * Description: JSON array of paths that define which parts of the payload should be sent downstream to sub-agents. Use ["*"] to send entire payload, or specify paths like ["customer.id", "campaign.*", "analysis.sentiment"]`),
4223
4271
  PayloadUpstreamPaths: z.string().describe(`
4224
4272
  * * Field Name: PayloadUpstreamPaths
4225
- * * Display Name: Upstream Payload Paths
4273
+ * * Display Name: Payload Upstream Paths
4226
4274
  * * SQL Data Type: nvarchar(MAX)
4227
4275
  * * Default Value: ["*"]
4228
4276
  * * Description: JSON array of paths that define which parts of the payload sub-agents are allowed to write back upstream. Use ["*"] to allow all writes, or specify paths like ["analysis.results", "recommendations.*"]`),
4229
4277
  PayloadSelfReadPaths: z.string().nullable().describe(`
4230
4278
  * * Field Name: PayloadSelfReadPaths
4231
- * * Display Name: Self-Read Payload Paths
4279
+ * * Display Name: Payload Self Read Paths
4232
4280
  * * SQL Data Type: nvarchar(MAX)
4233
4281
  * * Description: JSON array of paths that specify what parts of the payload the agent's own prompt can read. Controls downstream data
4234
4282
  flow when the agent executes its own prompt step.`),
4235
4283
  PayloadSelfWritePaths: z.string().nullable().describe(`
4236
4284
  * * Field Name: PayloadSelfWritePaths
4237
- * * Display Name: Self-Write Payload Paths
4285
+ * * Display Name: Payload Self Write Paths
4238
4286
  * * SQL Data Type: nvarchar(MAX)
4239
4287
  * * Description: JSON array of paths that specify what parts of the payload the agent's own prompt can write back. Controls upstream
4240
4288
  data flow when the agent executes its own prompt step.`),
@@ -4250,7 +4298,7 @@ data flow when the agent executes its own prompt step.`),
4250
4298
  * * Description: Optional JSON schema or requirements that define the expected structure and content of the agent's final payload. Used to validate the output when the agent declares success. Similar to OutputExample in AI Prompts.`),
4251
4299
  FinalPayloadValidationMode: z.union([z.literal('Fail'), z.literal('Retry'), z.literal('Warn')]).describe(`
4252
4300
  * * Field Name: FinalPayloadValidationMode
4253
- * * Display Name: Final Validation Mode
4301
+ * * Display Name: Final Payload Validation Mode
4254
4302
  * * SQL Data Type: nvarchar(25)
4255
4303
  * * Default Value: Retry
4256
4304
  * * Value List Type: List
@@ -4261,7 +4309,7 @@ data flow when the agent executes its own prompt step.`),
4261
4309
  * * Description: Determines how to handle validation failures when FinalPayloadValidation is specified. Options: Retry (default) - retry the agent with validation feedback, Fail - fail the agent run immediately, Warn - log a warning but allow success.`),
4262
4310
  FinalPayloadValidationMaxRetries: z.number().describe(`
4263
4311
  * * Field Name: FinalPayloadValidationMaxRetries
4264
- * * Display Name: Final Validation Max Retries
4312
+ * * Display Name: Final Payload Validation Max Retries
4265
4313
  * * SQL Data Type: int
4266
4314
  * * Default Value: 3
4267
4315
  * * Description: Maximum number of retry attempts allowed when FinalPayloadValidation fails with
@@ -4307,7 +4355,7 @@ if this limit is exceeded.`),
4307
4355
  * * Description: Optional JSON schema validation to apply to the input payload before agent execution begins. Uses the same JSONValidator format as FinalPayloadValidation.`),
4308
4356
  StartingPayloadValidationMode: z.union([z.literal('Fail'), z.literal('Warn')]).describe(`
4309
4357
  * * Field Name: StartingPayloadValidationMode
4310
- * * Display Name: Starting Validation Mode
4358
+ * * Display Name: Starting Payload Validation Mode
4311
4359
  * * SQL Data Type: nvarchar(25)
4312
4360
  * * Default Value: Fail
4313
4361
  * * Value List Type: List
@@ -4338,7 +4386,7 @@ if this limit is exceeded.`),
4338
4386
  * * 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.`),
4339
4387
  OwnerUserID: z.string().describe(`
4340
4388
  * * Field Name: OwnerUserID
4341
- * * Display Name: Owner
4389
+ * * Display Name: Owner User
4342
4390
  * * SQL Data Type: uniqueidentifier
4343
4391
  * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)
4344
4392
  * * Default Value: ECAFCCEC-6A37-EF11-86D4-000D3A4E707E
@@ -4462,7 +4510,7 @@ if this limit is exceeded.`),
4462
4510
  * * 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.`),
4463
4511
  AgentTypePromptParams: z.string().nullable().describe(`
4464
4512
  * * Field Name: AgentTypePromptParams
4465
- * * Display Name: Prompt Parameters
4513
+ * * Display Name: Agent Type Prompt Params
4466
4514
  * * SQL Data Type: nvarchar(MAX)
4467
4515
  * * Description: JSON object containing parameter values that customize how this agent's type-level system prompt is rendered. The schema is defined by the agent type's PromptParamsSchema field. Allows per-agent control over which prompt sections are included, enabling token savings by excluding unused documentation.`),
4468
4516
  ScopeConfig: z.string().nullable().describe(`
@@ -4600,13 +4648,34 @@ if this limit is exceeded.`),
4600
4648
  * * SQL Data Type: bit
4601
4649
  * * Default Value: 0
4602
4650
  * * Description: When 1, every root-level run of this agent executes in plan mode regardless of the per-request planMode flag — the agent must present a plan and receive human approval before any Actions or Sub-Agent steps execute. SupportsPlanMode is irrelevant when this is set. Use for high-consequence agents (e.g. ones with outbound-communication capabilities) where human-in-the-loop review is mandatory.`),
4651
+ ContextWindowMaxTokens: z.number().nullable().describe(`
4652
+ * * Field Name: ContextWindowMaxTokens
4653
+ * * Display Name: Context Window Max Tokens
4654
+ * * SQL Data Type: int
4655
+ * * Description: Per-agent override for the effective working-context budget, in tokens. Null inherits the agent type's value (which, if also null, falls back to the selected model's MaxInputTokens). The resolved value is clamped to the model's limit at runtime.`),
4656
+ CompactionTriggerPercent: z.number().nullable().describe(`
4657
+ * * Field Name: CompactionTriggerPercent
4658
+ * * Display Name: Compaction Trigger Percent
4659
+ * * SQL Data Type: int
4660
+ * * Description: Per-agent override for the cross-turn compaction trigger percentage. Null inherits the agent type's value.`),
4661
+ CompactionTargetPercent: z.number().nullable().describe(`
4662
+ * * Field Name: CompactionTargetPercent
4663
+ * * Display Name: Compaction Target Percent
4664
+ * * SQL Data Type: int
4665
+ * * Description: Per-agent override for the cross-turn compaction target percentage. Null inherits the agent type's value.`),
4666
+ ConversationSummaryPromptID: z.string().nullable().describe(`
4667
+ * * Field Name: ConversationSummaryPromptID
4668
+ * * Display Name: Conversation Summary Prompt ID
4669
+ * * SQL Data Type: uniqueidentifier
4670
+ * * Related Entity/Foreign Key: MJ: AI Prompts (vwAIPrompts.ID)
4671
+ * * Description: Per-agent override for the cross-turn conversation compaction prompt. Null inherits the agent type's value.`),
4603
4672
  Parent: z.string().nullable().describe(`
4604
4673
  * * Field Name: Parent
4605
- * * Display Name: Parent Agent Name
4674
+ * * Display Name: Parent
4606
4675
  * * SQL Data Type: nvarchar(255)`),
4607
4676
  ContextCompressionPrompt: z.string().nullable().describe(`
4608
4677
  * * Field Name: ContextCompressionPrompt
4609
- * * Display Name: Compression Prompt Name
4678
+ * * Display Name: Context Compression Prompt
4610
4679
  * * SQL Data Type: nvarchar(255)`),
4611
4680
  Type: z.string().nullable().describe(`
4612
4681
  * * Field Name: Type
@@ -4614,11 +4683,11 @@ if this limit is exceeded.`),
4614
4683
  * * SQL Data Type: nvarchar(100)`),
4615
4684
  DefaultArtifactType: z.string().nullable().describe(`
4616
4685
  * * Field Name: DefaultArtifactType
4617
- * * Display Name: Default Artifact Type Name
4686
+ * * Display Name: Default Artifact Type
4618
4687
  * * SQL Data Type: nvarchar(100)`),
4619
4688
  OwnerUser: z.string().describe(`
4620
4689
  * * Field Name: OwnerUser
4621
- * * Display Name: Owner Name
4690
+ * * Display Name: Owner User
4622
4691
  * * SQL Data Type: nvarchar(100)`),
4623
4692
  AttachmentStorageProvider: z.string().nullable().describe(`
4624
4693
  * * Field Name: AttachmentStorageProvider
@@ -4626,7 +4695,7 @@ if this limit is exceeded.`),
4626
4695
  * * SQL Data Type: nvarchar(50)`),
4627
4696
  Category: z.string().nullable().describe(`
4628
4697
  * * Field Name: Category
4629
- * * Display Name: Category Name
4698
+ * * Display Name: Category
4630
4699
  * * SQL Data Type: nvarchar(200)`),
4631
4700
  DefaultStorageAccount: z.string().nullable().describe(`
4632
4701
  * * Field Name: DefaultStorageAccount
@@ -4644,13 +4713,17 @@ if this limit is exceeded.`),
4644
4713
  * * Field Name: DefaultMediaCollection
4645
4714
  * * Display Name: Default Media Collection Name
4646
4715
  * * SQL Data Type: nvarchar(255)`),
4716
+ ConversationSummaryPrompt: z.string().nullable().describe(`
4717
+ * * Field Name: ConversationSummaryPrompt
4718
+ * * Display Name: Conversation Summary Prompt
4719
+ * * SQL Data Type: nvarchar(255)`),
4647
4720
  RootParentID: z.string().nullable().describe(`
4648
4721
  * * Field Name: RootParentID
4649
- * * Display Name: Root Parent
4722
+ * * Display Name: Root Parent ID
4650
4723
  * * SQL Data Type: uniqueidentifier`),
4651
4724
  RootDefaultCoAgentID: z.string().nullable().describe(`
4652
4725
  * * Field Name: RootDefaultCoAgentID
4653
- * * Display Name: Root Default Co-Agent
4726
+ * * Display Name: Root Default Co-Agent ID
4654
4727
  * * SQL Data Type: uniqueidentifier`),
4655
4728
  });
4656
4729
  /**
@@ -6316,12 +6389,6 @@ export const MJAIPromptRunSchema = z.object({
6316
6389
  * * Display Name: Execution Order
6317
6390
  * * SQL Data Type: int
6318
6391
  * * Description: Execution order for parallel child runs and result selector runs. Used to track the sequence of execution within a parallel run group. NULL for single runs and parallel parent runs.`),
6319
- AgentRunID: z.string().nullable().describe(`
6320
- * * Field Name: AgentRunID
6321
- * * Display Name: Agent Run
6322
- * * SQL Data Type: uniqueidentifier
6323
- * * Related Entity/Foreign Key: MJ: AI Agent Runs (vwAIAgentRuns.ID)
6324
- * * Description: Optional reference to the AIAgentRun that initiated this prompt execution. Links prompt runs to their parent agent runs for comprehensive execution tracking.`),
6325
6392
  Cost: z.number().nullable().describe(`
6326
6393
  * * Field Name: Cost
6327
6394
  * * Display Name: Cost
@@ -6699,10 +6766,6 @@ export const MJAIPromptRunSchema = z.object({
6699
6766
  * * Field Name: Parent
6700
6767
  * * Display Name: Parent
6701
6768
  * * SQL Data Type: nvarchar(255)`),
6702
- AgentRun: z.string().nullable().describe(`
6703
- * * Field Name: AgentRun
6704
- * * Display Name: Agent Run
6705
- * * SQL Data Type: nvarchar(255)`),
6706
6769
  OriginalModel: z.string().nullable().describe(`
6707
6770
  * * Field Name: OriginalModel
6708
6771
  * * Display Name: Original Model
@@ -7494,6 +7557,77 @@ export const MJAISkillPermissionSchema = z.object({
7494
7557
  * * Display Name: User
7495
7558
  * * SQL Data Type: nvarchar(100)`),
7496
7559
  });
7560
+ /**
7561
+ * zod schema definition for the entity MJ: AI Skill Search Scopes
7562
+ */
7563
+ export const MJAISkillSearchScopeSchema = z.object({
7564
+ ID: z.string().describe(`
7565
+ * * Field Name: ID
7566
+ * * Display Name: ID
7567
+ * * SQL Data Type: uniqueidentifier
7568
+ * * Default Value: newsequentialid()`),
7569
+ SkillID: z.string().describe(`
7570
+ * * Field Name: SkillID
7571
+ * * Display Name: Skill ID
7572
+ * * SQL Data Type: uniqueidentifier
7573
+ * * Related Entity/Foreign Key: MJ: AI Skills (vwAISkills.ID)
7574
+ * * Description: The skill this grant belongs to.`),
7575
+ SearchScopeID: z.string().describe(`
7576
+ * * Field Name: SearchScopeID
7577
+ * * Display Name: Search Scope ID
7578
+ * * SQL Data Type: uniqueidentifier
7579
+ * * Related Entity/Foreign Key: MJ: Search Scopes (vwSearchScopes.ID)
7580
+ * * Description: The Search Scope this skill may reach.`),
7581
+ Status: z.union([z.literal('Active'), z.literal('Inactive')]).describe(`
7582
+ * * Field Name: Status
7583
+ * * Display Name: Status
7584
+ * * SQL Data Type: nvarchar(20)
7585
+ * * Default Value: Active
7586
+ * * Value List Type: List
7587
+ * * Possible Values
7588
+ * * Active
7589
+ * * Inactive
7590
+ * * Description: Active or Inactive. Inactive rows are ignored during resolution.`),
7591
+ StartAt: z.date().nullable().describe(`
7592
+ * * Field Name: StartAt
7593
+ * * Display Name: Start At
7594
+ * * SQL Data Type: datetimeoffset
7595
+ * * Description: Optional start of the window in which this grant is honoured. NULL = no lower bound. Evaluated against the current time on every resolution, so a window opening or closing needs no cache invalidation.`),
7596
+ EndAt: z.date().nullable().describe(`
7597
+ * * Field Name: EndAt
7598
+ * * Display Name: End At
7599
+ * * SQL Data Type: datetimeoffset
7600
+ * * Description: Optional end of the window in which this grant is honoured. NULL = no upper bound.`),
7601
+ Priority: z.number().nullable().describe(`
7602
+ * * Field Name: Priority
7603
+ * * Display Name: Priority
7604
+ * * SQL Data Type: int
7605
+ * * Description: Lower numbers win when several granted scopes are candidates and none is marked IsDefault.`),
7606
+ IsDefault: z.boolean().describe(`
7607
+ * * Field Name: IsDefault
7608
+ * * Display Name: Is Default
7609
+ * * SQL Data Type: bit
7610
+ * * Default Value: 0
7611
+ * * Description: When set, this scope is chosen for the skill ahead of Priority ordering.`),
7612
+ __mj_CreatedAt: z.date().describe(`
7613
+ * * Field Name: __mj_CreatedAt
7614
+ * * Display Name: Created At
7615
+ * * SQL Data Type: datetimeoffset
7616
+ * * Default Value: getutcdate()`),
7617
+ __mj_UpdatedAt: z.date().describe(`
7618
+ * * Field Name: __mj_UpdatedAt
7619
+ * * Display Name: Updated At
7620
+ * * SQL Data Type: datetimeoffset
7621
+ * * Default Value: getutcdate()`),
7622
+ Skill: z.string().describe(`
7623
+ * * Field Name: Skill
7624
+ * * Display Name: Skill
7625
+ * * SQL Data Type: nvarchar(255)`),
7626
+ SearchScope: z.string().describe(`
7627
+ * * Field Name: SearchScope
7628
+ * * Display Name: Search Scope
7629
+ * * SQL Data Type: nvarchar(200)`),
7630
+ });
7497
7631
  /**
7498
7632
  * zod schema definition for the entity MJ: AI Skill Sub Agents
7499
7633
  */
@@ -7610,6 +7744,16 @@ export const MJAISkillSchema = z.object({
7610
7744
  * * Auto
7611
7745
  * * RequestedOnly
7612
7746
  * * Description: Controls whether this skill may ever be self-activated by an agent. Auto: the skill may appear in accepting agents' prompt catalogs and be activated mid-run on agent judgment — but only for agents whose own SkillActivationMode is also Auto (double gate). RequestedOnly (default): the skill is excluded from prompt catalogs entirely and can only be activated when the user explicitly requests it for the run (a /skill mention flowing through ExecuteAgentParams.requestedSkillIDs). All other activation gates (AcceptsSkills, skill Status, per-agent assignment, user Run permission) apply unchanged in both modes.`),
7747
+ SearchScopeAccess: z.union([z.literal('All'), z.literal('Assigned'), z.literal('None')]).nullable().describe(`
7748
+ * * Field Name: SearchScopeAccess
7749
+ * * Display Name: Search Scope Access
7750
+ * * SQL Data Type: nvarchar(20)
7751
+ * * Value List Type: List
7752
+ * * Possible Values
7753
+ * * All
7754
+ * * Assigned
7755
+ * * None
7756
+ * * Description: Which Search Scopes this skill may reach when activated. None = grants no retrieval scope; Assigned = only scopes listed in AISkillSearchScope; All = any active scope. NULL behaves as None so existing skills are unaffected. Mirrors AIAgent.SearchScopeAccess so a skill and an agent are interchangeable principals to SearchScopePermissionResolver.`),
7613
7757
  CreatedByUser: z.string().describe(`
7614
7758
  * * Field Name: CreatedByUser
7615
7759
  * * Display Name: Created By User
@@ -11537,6 +11681,172 @@ export const MJContentItemAttributeSchema = z.object({
11537
11681
  * * Display Name: Content Item
11538
11682
  * * SQL Data Type: nvarchar(250)`),
11539
11683
  });
11684
+ /**
11685
+ * zod schema definition for the entity MJ: Content Item Chunks
11686
+ */
11687
+ export const MJContentItemChunkSchema = z.object({
11688
+ ID: z.string().describe(`
11689
+ * * Field Name: ID
11690
+ * * Display Name: ID
11691
+ * * SQL Data Type: uniqueidentifier
11692
+ * * Default Value: newsequentialid()`),
11693
+ ContentItemID: z.string().describe(`
11694
+ * * Field Name: ContentItemID
11695
+ * * Display Name: Content Item
11696
+ * * SQL Data Type: uniqueidentifier
11697
+ * * Related Entity/Foreign Key: MJ: Content Items (vwContentItems.ID)`),
11698
+ Sequence: z.number().describe(`
11699
+ * * Field Name: Sequence
11700
+ * * Display Name: Sequence
11701
+ * * SQL Data Type: int
11702
+ * * Description: Zero-based ordinal position of this chunk within the parent Content Item, preserving the original order in which the text was split.`),
11703
+ Text: z.string().nullable().describe(`
11704
+ * * Field Name: Text
11705
+ * * Display Name: Text
11706
+ * * SQL Data Type: nvarchar(MAX)
11707
+ * * Description: The chunk of extracted text (from the parent Content Item) that was embedded to produce this chunk's vector. NULL for media-only segments (for example an image, or a video window with no transcript), where the embedded payload is the media itself and any readable representation lives in Description/Transcript.`),
11708
+ VectorRecordID: z.string().nullable().describe(`
11709
+ * * Field Name: VectorRecordID
11710
+ * * Display Name: Vector Record ID
11711
+ * * SQL Data Type: nvarchar(100)
11712
+ * * Description: The identifier of this chunk's vector record in the vector database (e.g. Pinecone) — the deterministic key MemberJunction assigns and upserts the chunk's embedding under. Provides traceability from the chunk back to its stored vector.`),
11713
+ EmbeddingStatus: z.union([z.literal('Active'), z.literal('Complete'), z.literal('Failed'), z.literal('Pending'), z.literal('Processed'), z.literal('Processing'), z.literal('Skipped')]).describe(`
11714
+ * * Field Name: EmbeddingStatus
11715
+ * * Display Name: Embedding Status
11716
+ * * SQL Data Type: nvarchar(20)
11717
+ * * Default Value: Pending
11718
+ * * Value List Type: List
11719
+ * * Possible Values
11720
+ * * Active
11721
+ * * Complete
11722
+ * * Failed
11723
+ * * Pending
11724
+ * * Processed
11725
+ * * Processing
11726
+ * * Skipped
11727
+ * * Description: Embedding lifecycle state of this chunk: Pending (default), Processing, Active, Complete, Processed, Failed, or Skipped.`),
11728
+ TaggingStatus: z.union([z.literal('Active'), z.literal('Complete'), z.literal('Failed'), z.literal('Pending'), z.literal('Processed'), z.literal('Processing'), z.literal('Skipped')]).describe(`
11729
+ * * Field Name: TaggingStatus
11730
+ * * Display Name: Tagging Status
11731
+ * * SQL Data Type: nvarchar(20)
11732
+ * * Default Value: Pending
11733
+ * * Value List Type: List
11734
+ * * Possible Values
11735
+ * * Active
11736
+ * * Complete
11737
+ * * Failed
11738
+ * * Pending
11739
+ * * Processed
11740
+ * * Processing
11741
+ * * Skipped
11742
+ * * Description: Tagging lifecycle state of this chunk: Pending (default), Processing, Active, Complete, Processed, Failed, or Skipped.`),
11743
+ DeleteStatus: z.union([z.literal('Deleted'), z.literal('Pending')]).nullable().describe(`
11744
+ * * Field Name: DeleteStatus
11745
+ * * Display Name: Delete Status
11746
+ * * SQL Data Type: nvarchar(20)
11747
+ * * Value List Type: List
11748
+ * * Possible Values
11749
+ * * Deleted
11750
+ * * Pending
11751
+ * * Description: Deletion lifecycle state of this chunk's vector: NULL when not slated for deletion, Pending when vector removal is queued, or Deleted once the vector has been removed from the vector database.`),
11752
+ LastEmbeddedAt: z.date().nullable().describe(`
11753
+ * * Field Name: LastEmbeddedAt
11754
+ * * Display Name: Last Embedded At
11755
+ * * SQL Data Type: datetimeoffset
11756
+ * * Description: Timestamp of the last successful embedding of this chunk.`),
11757
+ LastTaggedAt: z.date().nullable().describe(`
11758
+ * * Field Name: LastTaggedAt
11759
+ * * Display Name: Last Tagged At
11760
+ * * SQL Data Type: datetimeoffset
11761
+ * * Description: Timestamp of the last successful tagging of this chunk.`),
11762
+ LastDeletedAt: z.date().nullable().describe(`
11763
+ * * Field Name: LastDeletedAt
11764
+ * * Display Name: Last Deleted At
11765
+ * * SQL Data Type: datetimeoffset
11766
+ * * Description: Timestamp of the last successful deletion of this chunk's vector from the vector database.`),
11767
+ __mj_CreatedAt: z.date().describe(`
11768
+ * * Field Name: __mj_CreatedAt
11769
+ * * Display Name: Created At
11770
+ * * SQL Data Type: datetimeoffset
11771
+ * * Default Value: getutcdate()`),
11772
+ __mj_UpdatedAt: z.date().describe(`
11773
+ * * Field Name: __mj_UpdatedAt
11774
+ * * Display Name: Updated At
11775
+ * * SQL Data Type: datetimeoffset
11776
+ * * Default Value: getutcdate()`),
11777
+ Modality: z.union([z.literal('audio'), z.literal('image'), z.literal('multimodal'), z.literal('text'), z.literal('video')]).describe(`
11778
+ * * Field Name: Modality
11779
+ * * Display Name: Modality
11780
+ * * SQL Data Type: nvarchar(20)
11781
+ * * Default Value: text
11782
+ * * Value List Type: List
11783
+ * * Possible Values
11784
+ * * audio
11785
+ * * image
11786
+ * * multimodal
11787
+ * * text
11788
+ * * video
11789
+ * * Description: The modality of this chunk's embedded payload: text (default), image, audio, video, or multimodal (text and media fused into a single vector). Determines which vector index the chunk's embedding belongs to, since a multimodal embedding model produces vectors of a different dimension than a text model, and is used at retrieval time to merge results per modality rather than taking a single global top-k.`),
11790
+ StartOffset: z.number().nullable().describe(`
11791
+ * * Field Name: StartOffset
11792
+ * * Display Name: Start Offset
11793
+ * * SQL Data Type: int
11794
+ * * Description: Inclusive character offset where this chunk begins within the parent Content Item's extracted text. Together with EndOffset this is the provenance link that resolves a search hit back to the exact passage in the source document. NULL for media segments, which are positioned by StartMs/EndMs instead.`),
11795
+ EndOffset: z.number().nullable().describe(`
11796
+ * * Field Name: EndOffset
11797
+ * * Display Name: End Offset
11798
+ * * SQL Data Type: int
11799
+ * * Description: Exclusive character offset where this chunk ends within the parent Content Item's extracted text. See StartOffset. NULL for media segments.`),
11800
+ StartMs: z.number().nullable().describe(`
11801
+ * * Field Name: StartMs
11802
+ * * Display Name: Start (ms)
11803
+ * * SQL Data Type: int
11804
+ * * Description: Start of this chunk's time window, in milliseconds from the beginning of the parent audio or video asset. Set by transcript- or window-based segmentation; enables time-windowed playback deep-links from a search result (for example 14:22-15:05 of a session recording). NULL for text segments.`),
11805
+ EndMs: z.number().nullable().describe(`
11806
+ * * Field Name: EndMs
11807
+ * * Display Name: End (ms)
11808
+ * * SQL Data Type: int
11809
+ * * Description: End of this chunk's time window, in milliseconds from the beginning of the parent audio or video asset. See StartMs. NULL for text segments.`),
11810
+ PageNumber: z.number().nullable().describe(`
11811
+ * * Field Name: PageNumber
11812
+ * * Display Name: Page Number
11813
+ * * SQL Data Type: int
11814
+ * * Description: One-based page number this chunk came from, for paginated sources such as PDFs or slide decks. Provides citation-grade provenance alongside the character offsets. NULL when the source is not paginated.`),
11815
+ SegmentTitle: z.string().nullable().describe(`
11816
+ * * Field Name: SegmentTitle
11817
+ * * Display Name: Segment Title
11818
+ * * SQL Data Type: nvarchar(500)
11819
+ * * Description: Human-readable label for this segment — a document heading for structure-based segmentation, or a generated chapter title for topic- and transcript-based segmentation. Displayed with search results and prepended to the embedded text so a chunk's vector carries its own topic.`),
11820
+ Description: z.string().nullable().describe(`
11821
+ * * Field Name: Description
11822
+ * * Display Name: Description
11823
+ * * SQL Data Type: nvarchar(MAX)
11824
+ * * Description: An AI-generated description of this chunk's content, primarily for non-text segments. Retrieval of a media chunk otherwise yields only a pointer (an asset and a time window) that an agent cannot reason over; this column is the readable representation that an agent reads, a cross-encoder reranks, and lexical search matches. A short summary of it may be mirrored into the vector record's metadata for display and filtering, but the full text belongs here.`),
11825
+ Transcript: z.string().nullable().describe(`
11826
+ * * Field Name: Transcript
11827
+ * * Display Name: Transcript
11828
+ * * SQL Data Type: nvarchar(MAX)
11829
+ * * Description: The verbatim transcript covering this chunk's time window, for audio and video segments, including speaker labels where the source provides them. Distinct from Description, which is a generated summary: this is what was actually said, and it is what makes a recording findable by lexical search.`),
11830
+ SegmenterKey: z.string().nullable().describe(`
11831
+ * * Field Name: SegmenterKey
11832
+ * * Display Name: Segmenter Key
11833
+ * * SQL Data Type: nvarchar(100)
11834
+ * * Description: Registration key of the segmentation strategy that produced this chunk (for example StructuralText, SemanticText, Transcript, or FixedWindow). Provenance: when a Content Source's configured strategy changes, this identifies which chunks were produced by the previous strategy and therefore need re-chunking.`),
11835
+ ParentChunkID: z.string().nullable().describe(`
11836
+ * * Field Name: ParentChunkID
11837
+ * * Display Name: Parent Chunk
11838
+ * * SQL Data Type: uniqueidentifier
11839
+ * * Related Entity/Foreign Key: MJ: Content Item Chunks (vwContentItemChunks.ID)
11840
+ * * Description: Optional self-reference to another chunk of the same Content Item that is the parent of this one, expressing a chapter to sub-chapter hierarchy — for example a five-minute chapter of a recording and the individual speaker turns within it, or a document section and its subsections. NULL for top-level segments.`),
11841
+ ContentItem: z.string().nullable().describe(`
11842
+ * * Field Name: ContentItem
11843
+ * * Display Name: Content Item
11844
+ * * SQL Data Type: nvarchar(250)`),
11845
+ RootParentChunkID: z.string().nullable().describe(`
11846
+ * * Field Name: RootParentChunkID
11847
+ * * Display Name: Root Parent Chunk
11848
+ * * SQL Data Type: uniqueidentifier`),
11849
+ });
11540
11850
  /**
11541
11851
  * zod schema definition for the entity MJ: Content Item Duplicates
11542
11852
  */
@@ -11704,7 +12014,7 @@ export const MJContentItemSchema = z.object({
11704
12014
  * * Default Value: newsequentialid()`),
11705
12015
  ContentSourceID: z.string().describe(`
11706
12016
  * * Field Name: ContentSourceID
11707
- * * Display Name: Content Source ID
12017
+ * * Display Name: Content Source
11708
12018
  * * SQL Data Type: uniqueidentifier
11709
12019
  * * Related Entity/Foreign Key: MJ: Content Sources (vwContentSources.ID)`),
11710
12020
  Name: z.string().nullable().describe(`
@@ -11717,17 +12027,17 @@ export const MJContentItemSchema = z.object({
11717
12027
  * * SQL Data Type: nvarchar(MAX)`),
11718
12028
  ContentTypeID: z.string().describe(`
11719
12029
  * * Field Name: ContentTypeID
11720
- * * Display Name: Content Type ID
12030
+ * * Display Name: Content Type
11721
12031
  * * SQL Data Type: uniqueidentifier
11722
12032
  * * Related Entity/Foreign Key: MJ: Content Types (vwContentTypes.ID)`),
11723
12033
  ContentSourceTypeID: z.string().describe(`
11724
12034
  * * Field Name: ContentSourceTypeID
11725
- * * Display Name: Content Source Type ID
12035
+ * * Display Name: Content Source Type
11726
12036
  * * SQL Data Type: uniqueidentifier
11727
12037
  * * Related Entity/Foreign Key: MJ: Content Source Types (vwContentSourceTypes.ID)`),
11728
12038
  ContentFileTypeID: z.string().describe(`
11729
12039
  * * Field Name: ContentFileTypeID
11730
- * * Display Name: Content File Type ID
12040
+ * * Display Name: Content File Type
11731
12041
  * * SQL Data Type: uniqueidentifier
11732
12042
  * * Related Entity/Foreign Key: MJ: Content File Types (vwContentFileTypes.ID)`),
11733
12043
  Checksum: z.string().nullable().describe(`
@@ -11742,7 +12052,7 @@ export const MJContentItemSchema = z.object({
11742
12052
  * * Description: The source location URL where this content was retrieved from.`),
11743
12053
  Text: z.string().nullable().describe(`
11744
12054
  * * Field Name: Text
11745
- * * Display Name: Text
12055
+ * * Display Name: Extracted Text
11746
12056
  * * SQL Data Type: nvarchar(MAX)
11747
12057
  * * Description: The extracted text content from the source document or file.`),
11748
12058
  __mj_CreatedAt: z.date().describe(`
@@ -11757,7 +12067,7 @@ export const MJContentItemSchema = z.object({
11757
12067
  * * Default Value: getutcdate()`),
11758
12068
  EntityRecordDocumentID: z.string().nullable().describe(`
11759
12069
  * * Field Name: EntityRecordDocumentID
11760
- * * Display Name: Entity Record Document ID
12070
+ * * Display Name: Entity Record Document
11761
12071
  * * SQL Data Type: uniqueidentifier
11762
12072
  * * Related Entity/Foreign Key: MJ: Entity Record Documents (vwEntityRecordDocuments.ID)
11763
12073
  * * Description: For entity-sourced content items, links to the Entity Record Document snapshot that was rendered for this item. Provides traceability back to the source entity record via ERD.EntityID + ERD.RecordID. NULL for non-entity sources.`),
@@ -11781,7 +12091,7 @@ export const MJContentItemSchema = z.object({
11781
12091
  * * Description: Timestamp of the most recent successful embedding for this content item.`),
11782
12092
  EmbeddingModelID: z.string().nullable().describe(`
11783
12093
  * * Field Name: EmbeddingModelID
11784
- * * Display Name: Embedding Model ID
12094
+ * * Display Name: Embedding Model
11785
12095
  * * SQL Data Type: uniqueidentifier
11786
12096
  * * Related Entity/Foreign Key: MJ: AI Models (vwAIModels.ID)
11787
12097
  * * Description: The AI model used to generate the most recent embedding for this content item.`),
@@ -11803,30 +12113,54 @@ export const MJContentItemSchema = z.object({
11803
12113
  * * Display Name: Last Tagged At
11804
12114
  * * SQL Data Type: datetimeoffset
11805
12115
  * * Description: Timestamp of the most recent successful autotagging run for this content item.`),
12116
+ VectorRecordID: z.string().nullable().describe(`
12117
+ * * Field Name: VectorRecordID
12118
+ * * Display Name: Vector Record ID
12119
+ * * SQL Data Type: nvarchar(100)
12120
+ * * Description: The identifier of this Content Item's vector record in the vector database (e.g. Pinecone) — the deterministic key MemberJunction assigns and upserts the embedding under when the item is embedded as a single vector. Provides traceability from the Content Item back to its stored vector. For chunked items, per-chunk identifiers are tracked on the ContentItemChunk entity instead.`),
12121
+ ParentID: z.string().nullable().describe(`
12122
+ * * Field Name: ParentID
12123
+ * * Display Name: Parent Content
12124
+ * * SQL Data Type: uniqueidentifier
12125
+ * * Related Entity/Foreign Key: MJ: Content Items (vwContentItems.ID)
12126
+ * * Description: Optional self-reference to another Content Item that is the parent of this one, enabling a content-item hierarchy (e.g. a document and its sub-pages, or a site and its crawled pages). NULL for top-level items.`),
12127
+ DisplayLink: z.string().nullable().describe(`
12128
+ * * Field Name: DisplayLink
12129
+ * * Display Name: Display Link
12130
+ * * SQL Data Type: nvarchar(2000)
12131
+ * * Description: Optional display/clickable URL for this Content Item (e.g. a canonical or human-facing link), distinct from the source URL used for ingestion.`),
11806
12132
  ContentSource: z.string().nullable().describe(`
11807
12133
  * * Field Name: ContentSource
11808
- * * Display Name: Content Source
12134
+ * * Display Name: Content Source Name
11809
12135
  * * SQL Data Type: nvarchar(255)`),
11810
12136
  ContentType: z.string().describe(`
11811
12137
  * * Field Name: ContentType
11812
- * * Display Name: Content Type
12138
+ * * Display Name: Content Type Name
11813
12139
  * * SQL Data Type: nvarchar(255)`),
11814
12140
  ContentSourceType: z.string().describe(`
11815
12141
  * * Field Name: ContentSourceType
11816
- * * Display Name: Content Source Type
12142
+ * * Display Name: Content Source Type Name
11817
12143
  * * SQL Data Type: nvarchar(255)`),
11818
12144
  ContentFileType: z.string().describe(`
11819
12145
  * * Field Name: ContentFileType
11820
- * * Display Name: Content File Type
12146
+ * * Display Name: Content File Type Name
11821
12147
  * * SQL Data Type: nvarchar(255)`),
11822
12148
  EntityRecordDocument: z.string().nullable().describe(`
11823
12149
  * * Field Name: EntityRecordDocument
11824
- * * Display Name: Entity Record Document
12150
+ * * Display Name: Entity Record Document Name
11825
12151
  * * SQL Data Type: nvarchar(450)`),
11826
12152
  EmbeddingModel: z.string().nullable().describe(`
11827
12153
  * * Field Name: EmbeddingModel
11828
- * * Display Name: Embedding Model
12154
+ * * Display Name: Embedding Model Name
11829
12155
  * * SQL Data Type: nvarchar(50)`),
12156
+ Parent: z.string().nullable().describe(`
12157
+ * * Field Name: Parent
12158
+ * * Display Name: Parent Content Name
12159
+ * * SQL Data Type: nvarchar(250)`),
12160
+ RootParentID: z.string().nullable().describe(`
12161
+ * * Field Name: RootParentID
12162
+ * * Display Name: Root Parent Content
12163
+ * * SQL Data Type: uniqueidentifier`),
11830
12164
  });
11831
12165
  /**
11832
12166
  * zod schema definition for the entity MJ: Content Process Run Details
@@ -12279,37 +12613,47 @@ export const MJContentSourceSchema = z.object({
12279
12613
  * * SQL Data Type: uniqueidentifier
12280
12614
  * * Related Entity/Foreign Key: MJ: Scheduled Actions (vwScheduledActions.ID)
12281
12615
  * * Description: Optional link to a MJ Scheduled Action that automatically runs the classification pipeline for this source on a cron schedule.`),
12616
+ SegmenterKey: z.string().nullable().describe(`
12617
+ * * Field Name: SegmenterKey
12618
+ * * Display Name: Segmenter Strategy
12619
+ * * SQL Data Type: nvarchar(100)
12620
+ * * Description: Registration key of the segmentation strategy used to split this source's content into embeddable chunks — for example StructuralText (document headings), AdaptiveBoundary (target size closing on the nearest natural break), SemanticText (LLM-detected topic boundaries), Transcript (audio/video chapters), PagedContent (one segment per page), or FixedWindow (uniform windows). NULL falls back to the Content Type's value, then to a built-in default.`),
12621
+ CleanerKey: z.string().nullable().describe(`
12622
+ * * Field Name: CleanerKey
12623
+ * * Display Name: Cleaner Strategy
12624
+ * * SQL Data Type: nvarchar(100)
12625
+ * * Description: Registration key of the content-cleaning strategy applied to this source before segmentation — for example Html (CSS-selector-driven extraction that drops navigation, sidebars, and advertising) or PlainText (whitespace normalization only). Cleaning is separate from segmentation because the two change for different reasons: a new site template needs new selectors, not a new chunking strategy. NULL falls back to the Content Type's value, then to a default inferred from the content's mime type.`),
12282
12626
  ContentType: z.string().describe(`
12283
12627
  * * Field Name: ContentType
12284
- * * Display Name: Content Type
12628
+ * * Display Name: Content Type Name
12285
12629
  * * SQL Data Type: nvarchar(255)`),
12286
12630
  ContentSourceType: z.string().describe(`
12287
12631
  * * Field Name: ContentSourceType
12288
- * * Display Name: Content Source Type
12632
+ * * Display Name: Content Source Type Name
12289
12633
  * * SQL Data Type: nvarchar(255)`),
12290
12634
  ContentFileType: z.string().describe(`
12291
12635
  * * Field Name: ContentFileType
12292
- * * Display Name: Content File Type
12636
+ * * Display Name: Content File Type Name
12293
12637
  * * SQL Data Type: nvarchar(255)`),
12294
12638
  EmbeddingModel: z.string().nullable().describe(`
12295
12639
  * * Field Name: EmbeddingModel
12296
- * * Display Name: Embedding Model
12640
+ * * Display Name: Embedding Model Name
12297
12641
  * * SQL Data Type: nvarchar(50)`),
12298
12642
  VectorIndex: z.string().nullable().describe(`
12299
12643
  * * Field Name: VectorIndex
12300
- * * Display Name: Vector Index
12644
+ * * Display Name: Vector Index Name
12301
12645
  * * SQL Data Type: nvarchar(255)`),
12302
12646
  Entity: z.string().nullable().describe(`
12303
12647
  * * Field Name: Entity
12304
- * * Display Name: Entity
12648
+ * * Display Name: Entity Name
12305
12649
  * * SQL Data Type: nvarchar(255)`),
12306
12650
  EntityDocument: z.string().nullable().describe(`
12307
12651
  * * Field Name: EntityDocument
12308
- * * Display Name: Entity Document
12652
+ * * Display Name: Entity Document Name
12309
12653
  * * SQL Data Type: nvarchar(250)`),
12310
12654
  ScheduledAction: z.string().nullable().describe(`
12311
12655
  * * Field Name: ScheduledAction
12312
- * * Display Name: Scheduled Action
12656
+ * * Display Name: Scheduled Action Name
12313
12657
  * * SQL Data Type: nvarchar(255)`),
12314
12658
  });
12315
12659
  /**
@@ -12410,6 +12754,16 @@ export const MJContentTypeSchema = z.object({
12410
12754
  * * SQL Data Type: nvarchar(MAX)
12411
12755
  * * JSON Type: MJContentTypeEntity_IContentTypeConfiguration
12412
12756
  * * Description: JSON configuration blob for content-type-level settings. Conforms to the IContentTypeConfiguration interface. Reserved for future type-wide settings such as default tag taxonomy rules and processing options.`),
12757
+ SegmenterKey: z.string().nullable().describe(`
12758
+ * * Field Name: SegmenterKey
12759
+ * * Display Name: Segmenter Strategy
12760
+ * * SQL Data Type: nvarchar(100)
12761
+ * * Description: Default segmentation strategy for content of this type, used when a Content Source does not specify its own SegmenterKey. See ContentSource.SegmenterKey for the available strategies.`),
12762
+ CleanerKey: z.string().nullable().describe(`
12763
+ * * Field Name: CleanerKey
12764
+ * * Display Name: Cleaner Strategy
12765
+ * * SQL Data Type: nvarchar(100)
12766
+ * * Description: Default content-cleaning strategy for content of this type, used when a Content Source does not specify its own CleanerKey. See ContentSource.CleanerKey.`),
12413
12767
  AIModel: z.string().describe(`
12414
12768
  * * Field Name: AIModel
12415
12769
  * * Display Name: AI Model Name
@@ -12584,6 +12938,46 @@ export const MJConversationArtifactSchema = z.object({
12584
12938
  * * Display Name: Artifact Type
12585
12939
  * * SQL Data Type: nvarchar(100)`),
12586
12940
  });
12941
+ /**
12942
+ * zod schema definition for the entity MJ: Conversation Compaction Runs
12943
+ */
12944
+ export const MJConversationCompactionRunSchema = z.object({
12945
+ ID: z.string().describe(`
12946
+ * * Field Name: ID
12947
+ * * Display Name: ID
12948
+ * * SQL Data Type: uniqueidentifier
12949
+ * * Default Value: newsequentialid()`),
12950
+ ConversationDetailID: z.string().describe(`
12951
+ * * Field Name: ConversationDetailID
12952
+ * * Display Name: Conversation Detail
12953
+ * * SQL Data Type: uniqueidentifier
12954
+ * * Related Entity/Foreign Key: MJ: Conversation Details (vwConversationDetails.ID)
12955
+ * * Description: The conversation detail row whose SummaryOfEarlierConversation was produced by this compaction run.`),
12956
+ PromptRunID: z.string().describe(`
12957
+ * * Field Name: PromptRunID
12958
+ * * Display Name: Prompt Run
12959
+ * * SQL Data Type: uniqueidentifier
12960
+ * * Related Entity/Foreign Key: MJ: AI Prompt Runs (vwAIPromptRuns.ID)
12961
+ * * Description: The AI Prompt Run that generated the compaction summary (model, tokens, cost, prompt version).`),
12962
+ __mj_CreatedAt: z.date().describe(`
12963
+ * * Field Name: __mj_CreatedAt
12964
+ * * Display Name: Created At
12965
+ * * SQL Data Type: datetimeoffset
12966
+ * * Default Value: getutcdate()`),
12967
+ __mj_UpdatedAt: z.date().describe(`
12968
+ * * Field Name: __mj_UpdatedAt
12969
+ * * Display Name: Updated At
12970
+ * * SQL Data Type: datetimeoffset
12971
+ * * Default Value: getutcdate()`),
12972
+ ConversationDetail: z.string().nullable().describe(`
12973
+ * * Field Name: ConversationDetail
12974
+ * * Display Name: Conversation Detail Name
12975
+ * * SQL Data Type: nvarchar(100)`),
12976
+ PromptRun: z.string().nullable().describe(`
12977
+ * * Field Name: PromptRun
12978
+ * * Display Name: Prompt Run Name
12979
+ * * SQL Data Type: nvarchar(255)`),
12980
+ });
12587
12981
  /**
12588
12982
  * zod schema definition for the entity MJ: Conversation Detail Artifacts
12589
12983
  */
@@ -12836,7 +13230,7 @@ export const MJConversationDetailSchema = z.object({
12836
13230
  * * Description: Error message if this conversation turn encountered a problem.`),
12837
13231
  HiddenToUser: z.boolean().describe(`
12838
13232
  * * Field Name: HiddenToUser
12839
- * * Display Name: Hidden to User
13233
+ * * Display Name: Hidden To User
12840
13234
  * * SQL Data Type: bit
12841
13235
  * * Default Value: 0
12842
13236
  * * Description: Flag indicating if this message should be hidden from end users (system messages, function calls, etc.).`),
@@ -12867,30 +13261,30 @@ export const MJConversationDetailSchema = z.object({
12867
13261
  * * Description: This column stores human or AI-generated reflections on how to improve future responses based on the user feedback and the AI output generated for prior messages in the conversation.`),
12868
13262
  SummaryOfEarlierConversation: z.string().nullable().describe(`
12869
13263
  * * Field Name: SummaryOfEarlierConversation
12870
- * * Display Name: Summary of Earlier Conversation
13264
+ * * Display Name: Summary Of Earlier Conversation
12871
13265
  * * SQL Data Type: nvarchar(MAX)
12872
13266
  * * Description: This column optionally stores a summary of the entire conversation leading up to this particular conversation detail record. It is used in long-running conversations to optimize performance by summarizing earlier parts.`),
12873
13267
  UserID: z.string().nullable().describe(`
12874
13268
  * * Field Name: UserID
12875
- * * Display Name: User ID
13269
+ * * Display Name: User
12876
13270
  * * SQL Data Type: uniqueidentifier
12877
13271
  * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)
12878
13272
  * * Description: This field, when populated, overrides the UserID at the Conversation level to specify a different user created the message.`),
12879
13273
  ArtifactID: z.string().nullable().describe(`
12880
13274
  * * Field Name: ArtifactID
12881
- * * Display Name: Artifact ID
13275
+ * * Display Name: Artifact
12882
13276
  * * SQL Data Type: uniqueidentifier
12883
13277
  * * Related Entity/Foreign Key: MJ: Conversation Artifacts (vwConversationArtifacts.ID)
12884
13278
  * * Description: Optional reference to a conversation artifact associated with this conversation detail`),
12885
13279
  ArtifactVersionID: z.string().nullable().describe(`
12886
13280
  * * Field Name: ArtifactVersionID
12887
- * * Display Name: Artifact Version ID
13281
+ * * Display Name: Artifact Version
12888
13282
  * * SQL Data Type: uniqueidentifier
12889
13283
  * * Related Entity/Foreign Key: MJ: Conversation Artifact Versions (vwConversationArtifactVersions.ID)
12890
13284
  * * Description: Optional reference to a specific version of a conversation artifact associated with this conversation detail`),
12891
13285
  CompletionTime: z.number().nullable().describe(`
12892
13286
  * * Field Name: CompletionTime
12893
- * * Display Name: Completion Time (ms)
13287
+ * * Display Name: Completion Time
12894
13288
  * * SQL Data Type: bigint
12895
13289
  * * Description: Duration in milliseconds representing how long the AI response processing took to complete for this conversation detail.`),
12896
13290
  IsPinned: z.boolean().describe(`
@@ -12901,13 +13295,13 @@ export const MJConversationDetailSchema = z.object({
12901
13295
  * * Description: Indicates if this message is pinned within the conversation for easy reference`),
12902
13296
  ParentID: z.string().nullable().describe(`
12903
13297
  * * Field Name: ParentID
12904
- * * Display Name: Parent ID
13298
+ * * Display Name: Parent
12905
13299
  * * SQL Data Type: uniqueidentifier
12906
13300
  * * Related Entity/Foreign Key: MJ: Conversation Details (vwConversationDetails.ID)
12907
13301
  * * Description: Optional reference to parent message for threaded conversations. NULL for top-level messages.`),
12908
13302
  AgentID: z.string().nullable().describe(`
12909
13303
  * * Field Name: AgentID
12910
- * * Display Name: Agent ID
13304
+ * * Display Name: Agent
12911
13305
  * * SQL Data Type: uniqueidentifier
12912
13306
  * * Related Entity/Foreign Key: MJ: AI Agents (vwAIAgents.ID)
12913
13307
  * * Description: Denormalized agent ID for quick lookup of agent name and icon without joining through AgentRun`),
@@ -12929,7 +13323,7 @@ export const MJConversationDetailSchema = z.object({
12929
13323
  * * Description: DEPRECATED: Use ResponseForm, ActionableCommands, and AutomaticCommands instead. Legacy field for simple text-based suggested responses. Replaced in v2.118 by more powerful structured forms and commands system. Retained for historical data only.`),
12930
13324
  TestRunID: z.string().nullable().describe(`
12931
13325
  * * Field Name: TestRunID
12932
- * * Display Name: Test Run ID
13326
+ * * Display Name: Test Run
12933
13327
  * * SQL Data Type: uniqueidentifier
12934
13328
  * * Related Entity/Foreign Key: MJ: Test Runs (vwTestRuns.ID)
12935
13329
  * * Description: Optional Foreign Key - Links this conversation detail to a test run if this message was part of a test conversation. Allows filtering and analyzing test-specific conversation turns.`),
@@ -12956,7 +13350,7 @@ export const MJConversationDetailSchema = z.object({
12956
13350
  * * Description: Indicates if the original message content was modified after initial creation. Set automatically by the server when the Message field is changed on update.`),
12957
13351
  AgentSessionID: z.string().nullable().describe(`
12958
13352
  * * Field Name: AgentSessionID
12959
- * * Display Name: Agent Session ID
13353
+ * * Display Name: Agent Session
12960
13354
  * * SQL Data Type: uniqueidentifier
12961
13355
  * * Related Entity/Foreign Key: MJ: AI Agent Sessions (vwAIAgentSessions.ID)
12962
13356
  * * Description: Links this message to the AIAgentSession that was active when it was created. NULL for messages typed in standard text chat outside any live session. Lets the conversation timeline group a sessions messages into a single collapsible block.`),
@@ -12967,12 +13361,12 @@ export const MJConversationDetailSchema = z.object({
12967
13361
  * * Description: Immutable timestamp marking when this turn ended/finalized. Set once on turn completion (do NOT read __mj_UpdatedAt for this — it moves on later edits). Paired with __mj_CreatedAt (turn start) and AIAgentSession.RecordingStartedAt (t0) to derive audio seek offsets.`),
12968
13362
  UtteranceStartMs: z.number().nullable().describe(`
12969
13363
  * * Field Name: UtteranceStartMs
12970
- * * Display Name: Utterance Start (ms)
13364
+ * * Display Name: Utterance Start Ms
12971
13365
  * * SQL Data Type: int
12972
13366
  * * Description: Precise media-relative start of this turn, in integer milliseconds from the recording t0 (AIAgentSession.RecordingStartedAt). Populated only when the realtime driver supplies frame timing; NULL otherwise (fall back to __mj_CreatedAt - t0). Used by the evidence player for click-to-seek.`),
12973
13367
  UtteranceEndMs: z.number().nullable().describe(`
12974
13368
  * * Field Name: UtteranceEndMs
12975
- * * Display Name: Utterance End (ms)
13369
+ * * Display Name: Utterance End Ms
12976
13370
  * * SQL Data Type: int
12977
13371
  * * Description: Precise media-relative end of this turn, in integer milliseconds from the recording t0 (AIAgentSession.RecordingStartedAt). Populated only when the realtime driver supplies frame timing; NULL otherwise. Used by the evidence player for click-to-seek.`),
12978
13372
  MediaType: z.union([z.literal('Audio'), z.literal('Text'), z.literal('Video')]).nullable().describe(`
@@ -12985,6 +13379,12 @@ export const MJConversationDetailSchema = z.object({
12985
13379
  * * Text
12986
13380
  * * Video
12987
13381
  * * Description: Modality of this turn's content: Text, Audio, or Video. Forward-compat so video turns reuse the same record shape when realtime models support it. NULL = text (legacy default).`),
13382
+ Sequence: z.number().describe(`
13383
+ * * Field Name: Sequence
13384
+ * * Display Name: Sequence
13385
+ * * SQL Data Type: int
13386
+ * * Default Value: 0
13387
+ * * Description: Monotonic, per-conversation ordinal assigned on insert (1-based). Provides a stable symbolic handle used by conversation-history retrieval tools and by the sequence markers embedded in compaction summaries. A summary stored in SummaryOfEarlierConversation on a given row covers all rows with a lower Sequence in the same conversation.`),
12988
13388
  Conversation: z.string().nullable().describe(`
12989
13389
  * * Field Name: Conversation
12990
13390
  * * Display Name: Conversation
@@ -13015,7 +13415,7 @@ export const MJConversationDetailSchema = z.object({
13015
13415
  * * SQL Data Type: nvarchar(255)`),
13016
13416
  RootParentID: z.string().nullable().describe(`
13017
13417
  * * Field Name: RootParentID
13018
- * * Display Name: Root Parent ID
13418
+ * * Display Name: Root Parent
13019
13419
  * * SQL Data Type: uniqueidentifier`),
13020
13420
  });
13021
13421
  /**
@@ -22041,7 +22441,7 @@ export const MJOpenAppSchema = z.object({
22041
22441
  * * Display Name: Last Completed Step
22042
22442
  * * SQL Data Type: nvarchar(50)
22043
22443
  * * Value List Type: List
22044
- * * Possible Values
22444
+ * * Possible Values
22045
22445
  * * AngularExcludesUpdated
22046
22446
  * * ConfigUpdated
22047
22447
  * * DbCleanupDone
@@ -26304,6 +26704,22 @@ export const MJSearchExecutionLogSchema = z.object({
26304
26704
  * * Display Name: Updated At
26305
26705
  * * SQL Data Type: datetimeoffset
26306
26706
  * * Default Value: getutcdate()`),
26707
+ AISkillID: z.string().nullable().describe(`
26708
+ * * Field Name: AISkillID
26709
+ * * Display Name: AI Skill ID
26710
+ * * SQL Data Type: uniqueidentifier
26711
+ * * Related Entity/Foreign Key: MJ: AI Skills (vwAISkills.ID)
26712
+ * * Description: The AI Skill on whose behalf this search ran, or NULL for a search with no active skill. Mirrors AIAgentID: since a skill is a search principal in its own right (AISkill.SearchScopeAccess plus MJ: AI Skill Search Scopes rows can reach a scope the user's own roles do not grant), the log must record which skill was active or the entitlement decision cannot be reconstructed.`),
26713
+ PrimaryScopeRecordID: z.string().nullable().describe(`
26714
+ * * Field Name: PrimaryScopeRecordID
26715
+ * * Display Name: Primary Scope Record ID
26716
+ * * SQL Data Type: uniqueidentifier
26717
+ * * Description: The tenant this search ran for, taken from SearchContext.PrimaryScopeRecordID. Lets a multi-tenant deployment partition, filter and retain search audit history per customer. NULL for untenanted searches. Named for the existing primary-scope concept rather than OrganizationID because a scope's primary scope may be a Company, Client or Practice.`),
26718
+ ScopeDecisionJSON: z.string().nullable().describe(`
26719
+ * * Field Name: ScopeDecisionJSON
26720
+ * * Display Name: Scope Decision JSON
26721
+ * * SQL Data Type: nvarchar(MAX)
26722
+ * * Description: Serialized ScopeExplanation recording WHY this search could reach what it reached: the entitlement decision and the grant that produced it, every dimension with its provenance (CallerSupplied / ServerDerived / Default / DiscardedCaller / Absent), and each lane's rendered filter with its active-or-skipped status and reason. Identical in shape to the value returned by SearchEngine.ExplainScope(), so the dry-run an administrator previews before running a search is the same structure the audit log stores afterwards. NULL when the engine did not capture a decision (older writers, or a failure before scope resolution).`),
26307
26723
  SearchScope: z.string().nullable().describe(`
26308
26724
  * * Field Name: SearchScope
26309
26725
  * * Display Name: Search Scope Name
@@ -26316,6 +26732,10 @@ export const MJSearchExecutionLogSchema = z.object({
26316
26732
  * * Field Name: AIAgent
26317
26733
  * * Display Name: AI Agent Name
26318
26734
  * * SQL Data Type: nvarchar(255)`),
26735
+ AISkill: z.string().nullable().describe(`
26736
+ * * Field Name: AISkill
26737
+ * * Display Name: AI Skill
26738
+ * * SQL Data Type: nvarchar(255)`),
26319
26739
  });
26320
26740
  /**
26321
26741
  * zod schema definition for the entity MJ: Search Providers
@@ -26449,6 +26869,11 @@ export const MJSearchScopeEntitySchema = z.object({
26449
26869
  * * Display Name: Updated At
26450
26870
  * * SQL Data Type: datetimeoffset
26451
26871
  * * Default Value: getutcdate()`),
26872
+ RequiredMetadataKeys: z.string().nullable().describe(`
26873
+ * * Field Name: RequiredMetadataKeys
26874
+ * * Display Name: Required Metadata Keys
26875
+ * * SQL Data Type: nvarchar(MAX)
26876
+ * * Description: JSON array of column or alias names the rendered ExtraFilter MUST reference for this lane to be considered safe, e.g. ["OrganizationID","ContentSourceID"]. Checked against the RENDERED filter at search time: if one is missing the lane is SKIPPED rather than queried, because a partially-rendered filter (an {% if %} clause dropped when its dimension was absent or discarded) is still valid SQL and silently widens the search. Same concept and same engine check as SearchScopeExternalIndex.RequiredMetadataKeys, applied to the SQL lane. NULL = no contract declared, which is the pre-migration behaviour.`),
26452
26877
  SearchScope: z.string().describe(`
26453
26878
  * * Field Name: SearchScope
26454
26879
  * * Display Name: Search Scope
@@ -26517,6 +26942,11 @@ export const MJSearchScopeExternalIndexSchema = z.object({
26517
26942
  * * Display Name: Updated At
26518
26943
  * * SQL Data Type: datetimeoffset
26519
26944
  * * Default Value: getutcdate()`),
26945
+ RequiredMetadataKeys: z.string().nullable().describe(`
26946
+ * * Field Name: RequiredMetadataKeys
26947
+ * * Display Name: Required Metadata Keys
26948
+ * * SQL Data Type: nvarchar(MAX)
26949
+ * * Description: JSON array of metadata key names the rendered MetadataFilter MUST constrain on for this lane to be considered safe, e.g. ["OrganizationID","ContentSourceID"]. Checked against the RENDERED filter at search time: if a key is missing the lane is SKIPPED rather than queried, because a partially-rendered filter silently widens the search. This also documents the ingest contract — these are the labels the writer must stamp on every document in the index, since a filter on a key that was never written either matches nothing or (on providers that ignore unknown keys) matches everything. NULL = no contract declared, which is the pre-migration behaviour.`),
26520
26950
  SearchScope: z.string().describe(`
26521
26951
  * * Field Name: SearchScope
26522
26952
  * * Display Name: Search Scope
@@ -26575,6 +27005,21 @@ export const MJSearchScopePermissionSchema = z.object({
26575
27005
  * * Display Name: Updated At
26576
27006
  * * SQL Data Type: datetimeoffset
26577
27007
  * * Default Value: getutcdate()`),
27008
+ StartAt: z.date().nullable().describe(`
27009
+ * * Field Name: StartAt
27010
+ * * Display Name: Start At
27011
+ * * SQL Data Type: datetimeoffset
27012
+ * * Description: Optional start of the window in which this grant applies. NULL = no lower bound. SearchScopePermission was the only member of this family without a time window, so temporary grants previously needed a bespoke mechanism.`),
27013
+ EndAt: z.date().nullable().describe(`
27014
+ * * Field Name: EndAt
27015
+ * * Display Name: End At
27016
+ * * SQL Data Type: datetimeoffset
27017
+ * * Description: Optional end of the window in which this grant applies. NULL = no upper bound.`),
27018
+ PrimaryScopeRecordID: z.string().nullable().describe(`
27019
+ * * Field Name: PrimaryScopeRecordID
27020
+ * * Display Name: Primary Scope Record ID
27021
+ * * SQL Data Type: uniqueidentifier
27022
+ * * Description: Optional tenant this grant is limited to, matched against SearchContext.PrimaryScopeRecordID at search time and type-checkable against the scope's own PrimaryScopeEntityID. NULL = applies to every tenant, which is the pre-migration behaviour for all existing rows. Deliberately NOT called OrganizationID: MJ is domain-agnostic and a scope's primary scope may be a Company, Client or Practice, so this reuses the existing primary-scope concept rather than inventing a parallel tenancy column.`),
26578
27023
  SearchScope: z.string().describe(`
26579
27024
  * * Field Name: SearchScope
26580
27025
  * * Display Name: Search Scope Name
@@ -29404,6 +29849,88 @@ export const MJTestSchema = z.object({
29404
29849
  * * Display Name: Type
29405
29850
  * * SQL Data Type: nvarchar(100)`),
29406
29851
  });
29852
+ /**
29853
+ * zod schema definition for the entity MJ: Themes
29854
+ */
29855
+ export const MJThemeSchema = z.object({
29856
+ ID: z.string().describe(`
29857
+ * * Field Name: ID
29858
+ * * Display Name: ID
29859
+ * * SQL Data Type: uniqueidentifier
29860
+ * * Default Value: newsequentialid()`),
29861
+ Name: z.string().describe(`
29862
+ * * Field Name: Name
29863
+ * * Display Name: Name
29864
+ * * SQL Data Type: nvarchar(100)
29865
+ * * Description: Display name for the theme (unique).`),
29866
+ Description: z.string().nullable().describe(`
29867
+ * * Field Name: Description
29868
+ * * Display Name: Description
29869
+ * * SQL Data Type: nvarchar(MAX)
29870
+ * * Description: Optional description of the theme.`),
29871
+ Seeds: z.string().describe(`
29872
+ * * Field Name: Seeds
29873
+ * * Display Name: Seeds
29874
+ * * SQL Data Type: nvarchar(MAX)
29875
+ * * Description: Brand seeds as JSON (the ThemeSeeds shape from @memberjunction/theme-engine): primary/accent/tertiary hue anchors, neutralChroma, vibrancy, radius, depth, fontFamily, and an optional vizPalette override. Source of truth — the full token contract is derived from this, not stored.`),
29876
+ LightMarkURL: z.string().nullable().describe(`
29877
+ * * Field Name: LightMarkURL
29878
+ * * Display Name: Light Mode Logo
29879
+ * * SQL Data Type: nvarchar(1000)
29880
+ * * Description: Public URL of the logo mark for light surfaces. Logos are variant uploads, never recolored.`),
29881
+ DarkMarkURL: z.string().nullable().describe(`
29882
+ * * Field Name: DarkMarkURL
29883
+ * * Display Name: Dark Mode Logo
29884
+ * * SQL Data Type: nvarchar(1000)
29885
+ * * Description: Public URL of the logo mark for dark surfaces. Dark mode swaps to this artwork rather than transforming the light mark.`),
29886
+ WordmarkURL: z.string().nullable().describe(`
29887
+ * * Field Name: WordmarkURL
29888
+ * * Display Name: Wordmark Logo
29889
+ * * SQL Data Type: nvarchar(1000)
29890
+ * * Description: Optional public URL of the full wordmark logo.`),
29891
+ MonochromeURL: z.string().nullable().describe(`
29892
+ * * Field Name: MonochromeURL
29893
+ * * Display Name: Monochrome Logo
29894
+ * * SQL Data Type: nvarchar(1000)
29895
+ * * Description: Optional public URL of a single-fill monochrome logo variant.`),
29896
+ IsDefault: z.boolean().describe(`
29897
+ * * Field Name: IsDefault
29898
+ * * Display Name: Is Default Theme
29899
+ * * SQL Data Type: bit
29900
+ * * Default Value: 0
29901
+ * * Description: When 1, this is the default theme applied when no other is selected. Single-default enforcement is handled at the application layer.`),
29902
+ Status: z.union([z.literal('Active'), z.literal('Draft'), z.literal('Inactive')]).describe(`
29903
+ * * Field Name: Status
29904
+ * * Display Name: Status
29905
+ * * SQL Data Type: nvarchar(20)
29906
+ * * Default Value: Active
29907
+ * * Value List Type: List
29908
+ * * Possible Values
29909
+ * * Active
29910
+ * * Draft
29911
+ * * Inactive
29912
+ * * Description: Lifecycle status: Active (available), Inactive (retired), or Draft (in progress, not applied).`),
29913
+ Overrides: z.string().nullable().describe(`
29914
+ * * Field Name: Overrides
29915
+ * * Display Name: Token Overrides
29916
+ * * SQL Data Type: nvarchar(MAX)
29917
+ * * Description: Optional advanced token overrides as a JSON object mapping a --mj-* CSS custom property name to a value (e.g. {"--mj-brand-primary-hover":"#0a5cff"}). Applied on top of the seed-derived token contract at load, before CustomCSS. Leave null to use the pure derived theme.`),
29918
+ CustomCSS: z.string().nullable().describe(`
29919
+ * * Field Name: CustomCSS
29920
+ * * Display Name: Custom CSS
29921
+ * * SQL Data Type: nvarchar(MAX)
29922
+ * * Description: Optional advanced raw CSS appended to the theme overlay and auto-scoped under [data-theme-overlay="<id>"]. Applied last, after the derived tokens and Overrides. Escape hatch for rules the seed/token model cannot express; leave null for none.`),
29923
+ __mj_CreatedAt: z.date().describe(`
29924
+ * * Field Name: __mj_CreatedAt
29925
+ * * Display Name: Created At
29926
+ * * SQL Data Type: datetimeoffset
29927
+ * * Default Value: getutcdate()`),
29928
+ __mj_UpdatedAt: z.date().describe(`
29929
+ * * Field Name: __mj_UpdatedAt
29930
+ * * Display Name: Updated At
29931
+ * * SQL Data Type: datetimeoffset
29932
+ * * Default Value: getutcdate()`),
29933
+ });
29407
29934
  /**
29408
29935
  * zod schema definition for the entity MJ: User Application Entities
29409
29936
  */
@@ -38373,6 +38900,7 @@ let MJAIAgentRunStepEntity = class MJAIAgentRunStepEntity extends BaseEntity {
38373
38900
  * * Possible Values
38374
38901
  * * Actions
38375
38902
  * * Chat
38903
+ * * Compaction
38376
38904
  * * Decision
38377
38905
  * * ForEach
38378
38906
  * * Plan
@@ -41549,6 +42077,71 @@ let MJAIAgentTypeEntity = class MJAIAgentTypeEntity extends BaseEntity {
41549
42077
  return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
41550
42078
  }
41551
42079
  /**
42080
+ * Validate() method override for MJ: AI Agent Types entity. This is an auto-generated method that invokes the generated validators for this entity for the following fields:
42081
+ * * CompactionTargetPercent: The compaction target percentage must be a value between 1 and 100 percent.
42082
+ * * CompactionTriggerPercent: The compaction trigger percentage must be a value between 1 and 100 percent.
42083
+ * * ContextWindowMaxTokens: The maximum tokens for the context window must be a positive number greater than 0.
42084
+ * * Table-Level: The compaction target percentage must be less than the compaction trigger percentage to ensure that compaction successfully reduces the resource usage below the trigger threshold.
42085
+ * @public
42086
+ * @method
42087
+ * @override
42088
+ */
42089
+ Validate() {
42090
+ const result = super.Validate();
42091
+ this.ValidateCompactionTargetPercentRange(result);
42092
+ this.ValidateCompactionTriggerPercentRange(result);
42093
+ this.ValidateContextWindowMaxTokensGreaterThanZero(result);
42094
+ this.ValidateCompactionTargetPercentLessThanTriggerPercent(result);
42095
+ result.Success = result.Success && (result.Errors.length === 0);
42096
+ return result;
42097
+ }
42098
+ /**
42099
+ * The compaction target percentage must be a value between 1 and 100 percent.
42100
+ * @param result - the ValidationResult object to add any errors or warnings to
42101
+ * @public
42102
+ * @method
42103
+ */
42104
+ ValidateCompactionTargetPercentRange(result) {
42105
+ if (this.CompactionTargetPercent != null && (this.CompactionTargetPercent < 1 || this.CompactionTargetPercent > 100)) {
42106
+ result.Errors.push(new ValidationErrorInfo('CompactionTargetPercent', 'Compaction Target Percent must be between 1 and 100.', this.CompactionTargetPercent, ValidationErrorType.Failure));
42107
+ }
42108
+ }
42109
+ /**
42110
+ * The compaction trigger percentage must be a value between 1 and 100 percent.
42111
+ * @param result - the ValidationResult object to add any errors or warnings to
42112
+ * @public
42113
+ * @method
42114
+ */
42115
+ ValidateCompactionTriggerPercentRange(result) {
42116
+ if (this.CompactionTriggerPercent != null && (this.CompactionTriggerPercent < 1 || this.CompactionTriggerPercent > 100)) {
42117
+ result.Errors.push(new ValidationErrorInfo("CompactionTriggerPercent", "Compaction trigger percentage must be between 1 and 100.", this.CompactionTriggerPercent, ValidationErrorType.Failure));
42118
+ }
42119
+ }
42120
+ /**
42121
+ * The maximum tokens for the context window must be a positive number greater than 0.
42122
+ * @param result - the ValidationResult object to add any errors or warnings to
42123
+ * @public
42124
+ * @method
42125
+ */
42126
+ ValidateContextWindowMaxTokensGreaterThanZero(result) {
42127
+ if (this.ContextWindowMaxTokens != null && this.ContextWindowMaxTokens <= 0) {
42128
+ result.Errors.push(new ValidationErrorInfo("ContextWindowMaxTokens", "Context Window Max Tokens must be a positive number greater than 0.", this.ContextWindowMaxTokens, ValidationErrorType.Failure));
42129
+ }
42130
+ }
42131
+ /**
42132
+ * The compaction target percentage must be less than the compaction trigger percentage to ensure that compaction successfully reduces the resource usage below the trigger threshold.
42133
+ * @param result - the ValidationResult object to add any errors or warnings to
42134
+ * @public
42135
+ * @method
42136
+ */
42137
+ ValidateCompactionTargetPercentLessThanTriggerPercent(result) {
42138
+ if (this.CompactionTargetPercent != null && this.CompactionTriggerPercent != null) {
42139
+ if (this.CompactionTargetPercent >= this.CompactionTriggerPercent) {
42140
+ result.Errors.push(new ValidationErrorInfo("CompactionTargetPercent", "The compaction target percentage must be strictly less than the compaction trigger percentage.", this.CompactionTargetPercent, ValidationErrorType.Failure));
42141
+ }
42142
+ }
42143
+ }
42144
+ /**
41552
42145
  * * Field Name: ID
41553
42146
  * * Display Name: ID
41554
42147
  * * SQL Data Type: uniqueidentifier
@@ -41600,7 +42193,7 @@ let MJAIAgentTypeEntity = class MJAIAgentTypeEntity extends BaseEntity {
41600
42193
  }
41601
42194
  /**
41602
42195
  * * Field Name: IsActive
41603
- * * Display Name: Is Active
42196
+ * * Display Name: Active
41604
42197
  * * SQL Data Type: bit
41605
42198
  * * Default Value: 1
41606
42199
  * * Description: Indicates whether this agent type is available for use. Inactive types cannot be assigned to new agents.
@@ -41692,7 +42285,7 @@ let MJAIAgentTypeEntity = class MJAIAgentTypeEntity extends BaseEntity {
41692
42285
  }
41693
42286
  /**
41694
42287
  * * Field Name: PromptParamsSchema
41695
- * * Display Name: Prompt Parameters Schema
42288
+ * * Display Name: Prompt Params Schema
41696
42289
  * * SQL Data Type: nvarchar(MAX)
41697
42290
  * * Description: JSON Schema defining the available prompt parameters for this agent type. Includes property definitions with types, defaults, and descriptions. Used by agents of this type to customize which prompt sections are included in the system prompt. The schema follows JSON Schema draft-07 format.
41698
42291
  */
@@ -41716,7 +42309,7 @@ let MJAIAgentTypeEntity = class MJAIAgentTypeEntity extends BaseEntity {
41716
42309
  }
41717
42310
  /**
41718
42311
  * * Field Name: DefaultStorageAccountID
41719
- * * Display Name: Default Storage Account
42312
+ * * Display Name: Default Storage Account ID
41720
42313
  * * SQL Data Type: uniqueidentifier
41721
42314
  * * Related Entity/Foreign Key: MJ: File Storage Accounts (vwFileStorageAccounts.ID)
41722
42315
  * * Description: Default file storage account for agents of this type. Lowest priority in the resolution chain (Type → Category tree → Agent → Runtime override). When set, all agents of this type use this storage account unless overridden at a more specific level. FK to FileStorageAccount.
@@ -41729,7 +42322,7 @@ let MJAIAgentTypeEntity = class MJAIAgentTypeEntity extends BaseEntity {
41729
42322
  }
41730
42323
  /**
41731
42324
  * * Field Name: ConfigSchema
41732
- * * Display Name: Configuration Schema
42325
+ * * Display Name: Config Schema
41733
42326
  * * SQL Data Type: nvarchar(MAX)
41734
42327
  * * Description: JSON Schema (draft-07) describing the shape of TypeConfiguration payloads on agents of this type. When present, agent saves validate their TypeConfiguration against it server-side (MJAIAgentEntityServer.ValidateAsync); null = TypeConfiguration is freeform for this type.
41735
42328
  */
@@ -41752,8 +42345,96 @@ let MJAIAgentTypeEntity = class MJAIAgentTypeEntity extends BaseEntity {
41752
42345
  this.Set('DefaultConfiguration', value);
41753
42346
  }
41754
42347
  /**
42348
+ * * Field Name: ContextCompressionMessageThreshold
42349
+ * * Display Name: Context Compression Message Threshold
42350
+ * * SQL Data Type: int
42351
+ * * Description: Type-level default for the in-turn context-compression message-count threshold. Overridable per agent via AIAgent.ContextCompressionMessageThreshold.
42352
+ */
42353
+ get ContextCompressionMessageThreshold() {
42354
+ return this.Get('ContextCompressionMessageThreshold');
42355
+ }
42356
+ set ContextCompressionMessageThreshold(value) {
42357
+ this.Set('ContextCompressionMessageThreshold', value);
42358
+ }
42359
+ /**
42360
+ * * Field Name: ContextCompressionPromptID
42361
+ * * Display Name: Context Compression Prompt ID
42362
+ * * SQL Data Type: uniqueidentifier
42363
+ * * Related Entity/Foreign Key: MJ: AI Prompts (vwAIPrompts.ID)
42364
+ * * Description: Type-level default prompt used for in-turn context compression. Overridable per agent via AIAgent.ContextCompressionPromptID.
42365
+ */
42366
+ get ContextCompressionPromptID() {
42367
+ return this.Get('ContextCompressionPromptID');
42368
+ }
42369
+ set ContextCompressionPromptID(value) {
42370
+ this.Set('ContextCompressionPromptID', value);
42371
+ }
42372
+ /**
42373
+ * * Field Name: ContextCompressionMessageRetentionCount
42374
+ * * Display Name: Context Compression Message Retention Count
42375
+ * * SQL Data Type: int
42376
+ * * Description: Type-level default for the number of most-recent messages kept uncompressed (the "hot tail") when context compression is applied. Overridable per agent via AIAgent.ContextCompressionMessageRetentionCount.
42377
+ */
42378
+ get ContextCompressionMessageRetentionCount() {
42379
+ return this.Get('ContextCompressionMessageRetentionCount');
42380
+ }
42381
+ set ContextCompressionMessageRetentionCount(value) {
42382
+ this.Set('ContextCompressionMessageRetentionCount', value);
42383
+ }
42384
+ /**
42385
+ * * Field Name: ContextWindowMaxTokens
42386
+ * * Display Name: Context Window Max Tokens
42387
+ * * SQL Data Type: int
42388
+ * * Description: Type-level default effective working-context budget, in tokens. Null means use the selected model's MaxInputTokens. The resolved value is clamped to the model's limit at runtime (a warning is logged if it would exceed it). Overridable per agent via AIAgent.ContextWindowMaxTokens.
42389
+ */
42390
+ get ContextWindowMaxTokens() {
42391
+ return this.Get('ContextWindowMaxTokens');
42392
+ }
42393
+ set ContextWindowMaxTokens(value) {
42394
+ this.Set('ContextWindowMaxTokens', value);
42395
+ }
42396
+ /**
42397
+ * * Field Name: CompactionTriggerPercent
42398
+ * * Display Name: Compaction Trigger Percent
42399
+ * * SQL Data Type: int
42400
+ * * Default Value: 75
42401
+ * * Description: Type-level default: the percentage of the effective context budget at which cross-turn conversation compaction is triggered. Defaults to 75. Overridable per agent via AIAgent.CompactionTriggerPercent.
42402
+ */
42403
+ get CompactionTriggerPercent() {
42404
+ return this.Get('CompactionTriggerPercent');
42405
+ }
42406
+ set CompactionTriggerPercent(value) {
42407
+ this.Set('CompactionTriggerPercent', value);
42408
+ }
42409
+ /**
42410
+ * * Field Name: CompactionTargetPercent
42411
+ * * Display Name: Compaction Target Percent
42412
+ * * SQL Data Type: int
42413
+ * * Default Value: 30
42414
+ * * Description: Type-level default: the target percentage of the effective context budget to reduce to after a cross-turn compaction. Defaults to 30. Overridable per agent via AIAgent.CompactionTargetPercent.
42415
+ */
42416
+ get CompactionTargetPercent() {
42417
+ return this.Get('CompactionTargetPercent');
42418
+ }
42419
+ set CompactionTargetPercent(value) {
42420
+ this.Set('CompactionTargetPercent', value);
42421
+ }
42422
+ /**
42423
+ * * Field Name: ConversationSummaryPromptID
42424
+ * * Display Name: Conversation Summary Prompt ID
42425
+ * * SQL Data Type: uniqueidentifier
42426
+ * * Related Entity/Foreign Key: MJ: AI Prompts (vwAIPrompts.ID)
42427
+ * * Description: Type-level default prompt used for cross-turn conversation compaction (the durable summary baseline). Distinct from ContextCompressionPromptID, which governs in-turn compression. Overridable per agent via AIAgent.ConversationSummaryPromptID.
42428
+ */
42429
+ get ConversationSummaryPromptID() {
42430
+ return this.Get('ConversationSummaryPromptID');
42431
+ }
42432
+ set ConversationSummaryPromptID(value) {
42433
+ this.Set('ConversationSummaryPromptID', value);
42434
+ }
42435
+ /**
41755
42436
  * * Field Name: SystemPrompt
41756
- * * Display Name: System Prompt Content
42437
+ * * Display Name: System Prompt
41757
42438
  * * SQL Data Type: nvarchar(255)
41758
42439
  */
41759
42440
  get SystemPrompt() {
@@ -41761,12 +42442,28 @@ let MJAIAgentTypeEntity = class MJAIAgentTypeEntity extends BaseEntity {
41761
42442
  }
41762
42443
  /**
41763
42444
  * * Field Name: DefaultStorageAccount
41764
- * * Display Name: Default Storage Account Name
42445
+ * * Display Name: Default Storage Account
41765
42446
  * * SQL Data Type: nvarchar(200)
41766
42447
  */
41767
42448
  get DefaultStorageAccount() {
41768
42449
  return this.Get('DefaultStorageAccount');
41769
42450
  }
42451
+ /**
42452
+ * * Field Name: ContextCompressionPrompt
42453
+ * * Display Name: Context Compression Prompt
42454
+ * * SQL Data Type: nvarchar(255)
42455
+ */
42456
+ get ContextCompressionPrompt() {
42457
+ return this.Get('ContextCompressionPrompt');
42458
+ }
42459
+ /**
42460
+ * * Field Name: ConversationSummaryPrompt
42461
+ * * Display Name: Conversation Summary Prompt
42462
+ * * SQL Data Type: nvarchar(255)
42463
+ */
42464
+ get ConversationSummaryPrompt() {
42465
+ return this.Get('ConversationSummaryPrompt');
42466
+ }
41770
42467
  };
41771
42468
  MJAIAgentTypeEntity = __decorate([
41772
42469
  RegisterClass(BaseEntity, 'MJ: AI Agent Types')
@@ -41837,6 +42534,9 @@ let MJAIAgentEntity = class MJAIAgentEntity extends BaseEntity {
41837
42534
  }
41838
42535
  /**
41839
42536
  * Validate() method override for MJ: AI Agents entity. This is an auto-generated method that invokes the generated validators for this entity for the following fields:
42537
+ * * CompactionTargetPercent: The compaction target percentage must be between 1 and 100 percent.
42538
+ * * CompactionTriggerPercent: The compaction trigger percentage must be a value between 1 and 100.
42539
+ * * ContextWindowMaxTokens: The maximum tokens for the context window must be a positive number greater than zero.
41840
42540
  * * DefaultPromptEffortLevel: This rule ensures that if a default prompt effort level is specified, it must be a number between 1 and 100, inclusive.
41841
42541
  * * MaxExecutionsPerRun: This rule ensures that if 'MaxExecutionsPerRun' is provided, it must be a value greater than zero. If it is left blank, that's acceptable.
41842
42542
  * * MaxMessages: This rule ensures that the maximum number of messages, if specified, must be greater than zero.
@@ -41850,6 +42550,9 @@ let MJAIAgentEntity = class MJAIAgentEntity extends BaseEntity {
41850
42550
  */
41851
42551
  Validate() {
41852
42552
  const result = super.Validate();
42553
+ this.ValidateCompactionTargetPercentRange(result);
42554
+ this.ValidateCompactionTriggerPercentRange(result);
42555
+ this.ValidateContextWindowMaxTokensGreaterThanZero(result);
41853
42556
  this.ValidateDefaultPromptEffortLevelInAllowedRange(result);
41854
42557
  this.ValidateMaxExecutionsPerRunGreaterThanZero(result);
41855
42558
  this.ValidateMaxMessagesGreaterThanZero(result);
@@ -41861,6 +42564,39 @@ let MJAIAgentEntity = class MJAIAgentEntity extends BaseEntity {
41861
42564
  return result;
41862
42565
  }
41863
42566
  /**
42567
+ * The compaction target percentage must be between 1 and 100 percent.
42568
+ * @param result - the ValidationResult object to add any errors or warnings to
42569
+ * @public
42570
+ * @method
42571
+ */
42572
+ ValidateCompactionTargetPercentRange(result) {
42573
+ if (this.CompactionTargetPercent != null && (this.CompactionTargetPercent < 1 || this.CompactionTargetPercent > 100)) {
42574
+ result.Errors.push(new ValidationErrorInfo("CompactionTargetPercent", "Compaction target percent must be between 1 and 100.", this.CompactionTargetPercent, ValidationErrorType.Failure));
42575
+ }
42576
+ }
42577
+ /**
42578
+ * The compaction trigger percentage must be a value between 1 and 100.
42579
+ * @param result - the ValidationResult object to add any errors or warnings to
42580
+ * @public
42581
+ * @method
42582
+ */
42583
+ ValidateCompactionTriggerPercentRange(result) {
42584
+ if (this.CompactionTriggerPercent != null && (this.CompactionTriggerPercent < 1 || this.CompactionTriggerPercent > 100)) {
42585
+ result.Errors.push(new ValidationErrorInfo("CompactionTriggerPercent", "Compaction trigger percentage must be between 1 and 100.", this.CompactionTriggerPercent, ValidationErrorType.Failure));
42586
+ }
42587
+ }
42588
+ /**
42589
+ * The maximum tokens for the context window must be a positive number greater than zero.
42590
+ * @param result - the ValidationResult object to add any errors or warnings to
42591
+ * @public
42592
+ * @method
42593
+ */
42594
+ ValidateContextWindowMaxTokensGreaterThanZero(result) {
42595
+ if (this.ContextWindowMaxTokens != null && this.ContextWindowMaxTokens <= 0) {
42596
+ result.Errors.push(new ValidationErrorInfo("ContextWindowMaxTokens", "The maximum tokens for the context window must be greater than zero.", this.ContextWindowMaxTokens, ValidationErrorType.Failure));
42597
+ }
42598
+ }
42599
+ /**
41864
42600
  * This rule ensures that if a default prompt effort level is specified, it must be a number between 1 and 100, inclusive.
41865
42601
  * @param result - the ValidationResult object to add any errors or warnings to
41866
42602
  * @public
@@ -42016,7 +42752,7 @@ let MJAIAgentEntity = class MJAIAgentEntity extends BaseEntity {
42016
42752
  }
42017
42753
  /**
42018
42754
  * * Field Name: ParentID
42019
- * * Display Name: Parent Agent
42755
+ * * Display Name: Parent
42020
42756
  * * SQL Data Type: uniqueidentifier
42021
42757
  * * Related Entity/Foreign Key: MJ: AI Agents (vwAIAgents.ID)
42022
42758
  * * Description: References the parent agent in the hierarchical structure. If NULL, this is a root (top-level) agent.
@@ -42085,7 +42821,7 @@ let MJAIAgentEntity = class MJAIAgentEntity extends BaseEntity {
42085
42821
  }
42086
42822
  /**
42087
42823
  * * Field Name: ContextCompressionMessageThreshold
42088
- * * Display Name: Compression Message Threshold
42824
+ * * Display Name: Context Compression Message Threshold
42089
42825
  * * SQL Data Type: int
42090
42826
  * * Description: Number of messages that triggers context compression when EnableContextCompression is true.
42091
42827
  */
@@ -42097,7 +42833,7 @@ let MJAIAgentEntity = class MJAIAgentEntity extends BaseEntity {
42097
42833
  }
42098
42834
  /**
42099
42835
  * * Field Name: ContextCompressionPromptID
42100
- * * Display Name: Compression Prompt
42836
+ * * Display Name: Context Compression Prompt ID
42101
42837
  * * SQL Data Type: uniqueidentifier
42102
42838
  * * Related Entity/Foreign Key: MJ: AI Prompts (vwAIPrompts.ID)
42103
42839
  */
@@ -42109,7 +42845,7 @@ let MJAIAgentEntity = class MJAIAgentEntity extends BaseEntity {
42109
42845
  }
42110
42846
  /**
42111
42847
  * * Field Name: ContextCompressionMessageRetentionCount
42112
- * * Display Name: Compression Retention Count
42848
+ * * Display Name: Context Compression Message Retention Count
42113
42849
  * * SQL Data Type: int
42114
42850
  * * Description: Number of recent messages to keep uncompressed when context compression is applied.
42115
42851
  */
@@ -42121,7 +42857,7 @@ let MJAIAgentEntity = class MJAIAgentEntity extends BaseEntity {
42121
42857
  }
42122
42858
  /**
42123
42859
  * * Field Name: TypeID
42124
- * * Display Name: Agent Type
42860
+ * * Display Name: Type
42125
42861
  * * SQL Data Type: uniqueidentifier
42126
42862
  * * Related Entity/Foreign Key: MJ: AI Agent Types (vwAIAgentTypes.ID)
42127
42863
  * * Description: Reference to the AIAgentType that defines the category and system-level behavior for this agent. Cannot be null.
@@ -42193,7 +42929,7 @@ let MJAIAgentEntity = class MJAIAgentEntity extends BaseEntity {
42193
42929
  }
42194
42930
  /**
42195
42931
  * * Field Name: PayloadDownstreamPaths
42196
- * * Display Name: Downstream Payload Paths
42932
+ * * Display Name: Payload Downstream Paths
42197
42933
  * * SQL Data Type: nvarchar(MAX)
42198
42934
  * * Default Value: ["*"]
42199
42935
  * * Description: JSON array of paths that define which parts of the payload should be sent downstream to sub-agents. Use ["*"] to send entire payload, or specify paths like ["customer.id", "campaign.*", "analysis.sentiment"]
@@ -42206,7 +42942,7 @@ let MJAIAgentEntity = class MJAIAgentEntity extends BaseEntity {
42206
42942
  }
42207
42943
  /**
42208
42944
  * * Field Name: PayloadUpstreamPaths
42209
- * * Display Name: Upstream Payload Paths
42945
+ * * Display Name: Payload Upstream Paths
42210
42946
  * * SQL Data Type: nvarchar(MAX)
42211
42947
  * * Default Value: ["*"]
42212
42948
  * * Description: JSON array of paths that define which parts of the payload sub-agents are allowed to write back upstream. Use ["*"] to allow all writes, or specify paths like ["analysis.results", "recommendations.*"]
@@ -42219,7 +42955,7 @@ let MJAIAgentEntity = class MJAIAgentEntity extends BaseEntity {
42219
42955
  }
42220
42956
  /**
42221
42957
  * * Field Name: PayloadSelfReadPaths
42222
- * * Display Name: Self-Read Payload Paths
42958
+ * * Display Name: Payload Self Read Paths
42223
42959
  * * SQL Data Type: nvarchar(MAX)
42224
42960
  * * Description: JSON array of paths that specify what parts of the payload the agent's own prompt can read. Controls downstream data
42225
42961
  flow when the agent executes its own prompt step.
@@ -42232,7 +42968,7 @@ flow when the agent executes its own prompt step.
42232
42968
  }
42233
42969
  /**
42234
42970
  * * Field Name: PayloadSelfWritePaths
42235
- * * Display Name: Self-Write Payload Paths
42971
+ * * Display Name: Payload Self Write Paths
42236
42972
  * * SQL Data Type: nvarchar(MAX)
42237
42973
  * * Description: JSON array of paths that specify what parts of the payload the agent's own prompt can write back. Controls upstream
42238
42974
  data flow when the agent executes its own prompt step.
@@ -42269,7 +43005,7 @@ data flow when the agent executes its own prompt step.
42269
43005
  }
42270
43006
  /**
42271
43007
  * * Field Name: FinalPayloadValidationMode
42272
- * * Display Name: Final Validation Mode
43008
+ * * Display Name: Final Payload Validation Mode
42273
43009
  * * SQL Data Type: nvarchar(25)
42274
43010
  * * Default Value: Retry
42275
43011
  * * Value List Type: List
@@ -42287,7 +43023,7 @@ data flow when the agent executes its own prompt step.
42287
43023
  }
42288
43024
  /**
42289
43025
  * * Field Name: FinalPayloadValidationMaxRetries
42290
- * * Display Name: Final Validation Max Retries
43026
+ * * Display Name: Final Payload Validation Max Retries
42291
43027
  * * SQL Data Type: int
42292
43028
  * * Default Value: 3
42293
43029
  * * Description: Maximum number of retry attempts allowed when FinalPayloadValidation fails with
@@ -42389,7 +43125,7 @@ if this limit is exceeded.
42389
43125
  }
42390
43126
  /**
42391
43127
  * * Field Name: StartingPayloadValidationMode
42392
- * * Display Name: Starting Validation Mode
43128
+ * * Display Name: Starting Payload Validation Mode
42393
43129
  * * SQL Data Type: nvarchar(25)
42394
43130
  * * Default Value: Fail
42395
43131
  * * Value List Type: List
@@ -42448,7 +43184,7 @@ if this limit is exceeded.
42448
43184
  }
42449
43185
  /**
42450
43186
  * * Field Name: OwnerUserID
42451
- * * Display Name: Owner
43187
+ * * Display Name: Owner User
42452
43188
  * * SQL Data Type: uniqueidentifier
42453
43189
  * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)
42454
43190
  * * Default Value: ECAFCCEC-6A37-EF11-86D4-000D3A4E707E
@@ -42691,7 +43427,7 @@ if this limit is exceeded.
42691
43427
  }
42692
43428
  /**
42693
43429
  * * Field Name: AgentTypePromptParams
42694
- * * Display Name: Prompt Parameters
43430
+ * * Display Name: Agent Type Prompt Params
42695
43431
  * * SQL Data Type: nvarchar(MAX)
42696
43432
  * * Description: JSON object containing parameter values that customize how this agent's type-level system prompt is rendered. The schema is defined by the agent type's PromptParamsSchema field. Allows per-agent control over which prompt sections are included, enabling token savings by excluding unused documentation.
42697
43433
  */
@@ -42977,8 +43713,57 @@ if this limit is exceeded.
42977
43713
  this.Set('RequirePlanMode', value);
42978
43714
  }
42979
43715
  /**
43716
+ * * Field Name: ContextWindowMaxTokens
43717
+ * * Display Name: Context Window Max Tokens
43718
+ * * SQL Data Type: int
43719
+ * * Description: Per-agent override for the effective working-context budget, in tokens. Null inherits the agent type's value (which, if also null, falls back to the selected model's MaxInputTokens). The resolved value is clamped to the model's limit at runtime.
43720
+ */
43721
+ get ContextWindowMaxTokens() {
43722
+ return this.Get('ContextWindowMaxTokens');
43723
+ }
43724
+ set ContextWindowMaxTokens(value) {
43725
+ this.Set('ContextWindowMaxTokens', value);
43726
+ }
43727
+ /**
43728
+ * * Field Name: CompactionTriggerPercent
43729
+ * * Display Name: Compaction Trigger Percent
43730
+ * * SQL Data Type: int
43731
+ * * Description: Per-agent override for the cross-turn compaction trigger percentage. Null inherits the agent type's value.
43732
+ */
43733
+ get CompactionTriggerPercent() {
43734
+ return this.Get('CompactionTriggerPercent');
43735
+ }
43736
+ set CompactionTriggerPercent(value) {
43737
+ this.Set('CompactionTriggerPercent', value);
43738
+ }
43739
+ /**
43740
+ * * Field Name: CompactionTargetPercent
43741
+ * * Display Name: Compaction Target Percent
43742
+ * * SQL Data Type: int
43743
+ * * Description: Per-agent override for the cross-turn compaction target percentage. Null inherits the agent type's value.
43744
+ */
43745
+ get CompactionTargetPercent() {
43746
+ return this.Get('CompactionTargetPercent');
43747
+ }
43748
+ set CompactionTargetPercent(value) {
43749
+ this.Set('CompactionTargetPercent', value);
43750
+ }
43751
+ /**
43752
+ * * Field Name: ConversationSummaryPromptID
43753
+ * * Display Name: Conversation Summary Prompt ID
43754
+ * * SQL Data Type: uniqueidentifier
43755
+ * * Related Entity/Foreign Key: MJ: AI Prompts (vwAIPrompts.ID)
43756
+ * * Description: Per-agent override for the cross-turn conversation compaction prompt. Null inherits the agent type's value.
43757
+ */
43758
+ get ConversationSummaryPromptID() {
43759
+ return this.Get('ConversationSummaryPromptID');
43760
+ }
43761
+ set ConversationSummaryPromptID(value) {
43762
+ this.Set('ConversationSummaryPromptID', value);
43763
+ }
43764
+ /**
42980
43765
  * * Field Name: Parent
42981
- * * Display Name: Parent Agent Name
43766
+ * * Display Name: Parent
42982
43767
  * * SQL Data Type: nvarchar(255)
42983
43768
  */
42984
43769
  get Parent() {
@@ -42986,7 +43771,7 @@ if this limit is exceeded.
42986
43771
  }
42987
43772
  /**
42988
43773
  * * Field Name: ContextCompressionPrompt
42989
- * * Display Name: Compression Prompt Name
43774
+ * * Display Name: Context Compression Prompt
42990
43775
  * * SQL Data Type: nvarchar(255)
42991
43776
  */
42992
43777
  get ContextCompressionPrompt() {
@@ -43002,7 +43787,7 @@ if this limit is exceeded.
43002
43787
  }
43003
43788
  /**
43004
43789
  * * Field Name: DefaultArtifactType
43005
- * * Display Name: Default Artifact Type Name
43790
+ * * Display Name: Default Artifact Type
43006
43791
  * * SQL Data Type: nvarchar(100)
43007
43792
  */
43008
43793
  get DefaultArtifactType() {
@@ -43010,7 +43795,7 @@ if this limit is exceeded.
43010
43795
  }
43011
43796
  /**
43012
43797
  * * Field Name: OwnerUser
43013
- * * Display Name: Owner Name
43798
+ * * Display Name: Owner User
43014
43799
  * * SQL Data Type: nvarchar(100)
43015
43800
  */
43016
43801
  get OwnerUser() {
@@ -43026,7 +43811,7 @@ if this limit is exceeded.
43026
43811
  }
43027
43812
  /**
43028
43813
  * * Field Name: Category
43029
- * * Display Name: Category Name
43814
+ * * Display Name: Category
43030
43815
  * * SQL Data Type: nvarchar(200)
43031
43816
  */
43032
43817
  get Category() {
@@ -43065,8 +43850,16 @@ if this limit is exceeded.
43065
43850
  return this.Get('DefaultMediaCollection');
43066
43851
  }
43067
43852
  /**
43853
+ * * Field Name: ConversationSummaryPrompt
43854
+ * * Display Name: Conversation Summary Prompt
43855
+ * * SQL Data Type: nvarchar(255)
43856
+ */
43857
+ get ConversationSummaryPrompt() {
43858
+ return this.Get('ConversationSummaryPrompt');
43859
+ }
43860
+ /**
43068
43861
  * * Field Name: RootParentID
43069
- * * Display Name: Root Parent
43862
+ * * Display Name: Root Parent ID
43070
43863
  * * SQL Data Type: uniqueidentifier
43071
43864
  */
43072
43865
  get RootParentID() {
@@ -43074,7 +43867,7 @@ if this limit is exceeded.
43074
43867
  }
43075
43868
  /**
43076
43869
  * * Field Name: RootDefaultCoAgentID
43077
- * * Display Name: Root Default Co-Agent
43870
+ * * Display Name: Root Default Co-Agent ID
43078
43871
  * * SQL Data Type: uniqueidentifier
43079
43872
  */
43080
43873
  get RootDefaultCoAgentID() {
@@ -47728,19 +48521,6 @@ let MJAIPromptRunEntity = class MJAIPromptRunEntity extends BaseEntity {
47728
48521
  this.Set('ExecutionOrder', value);
47729
48522
  }
47730
48523
  /**
47731
- * * Field Name: AgentRunID
47732
- * * Display Name: Agent Run
47733
- * * SQL Data Type: uniqueidentifier
47734
- * * Related Entity/Foreign Key: MJ: AI Agent Runs (vwAIAgentRuns.ID)
47735
- * * Description: Optional reference to the AIAgentRun that initiated this prompt execution. Links prompt runs to their parent agent runs for comprehensive execution tracking.
47736
- */
47737
- get AgentRunID() {
47738
- return this.Get('AgentRunID');
47739
- }
47740
- set AgentRunID(value) {
47741
- this.Set('AgentRunID', value);
47742
- }
47743
- /**
47744
48524
  * * Field Name: Cost
47745
48525
  * * Display Name: Cost
47746
48526
  * * SQL Data Type: decimal(19, 8)
@@ -48604,14 +49384,6 @@ let MJAIPromptRunEntity = class MJAIPromptRunEntity extends BaseEntity {
48604
49384
  return this.Get('Parent');
48605
49385
  }
48606
49386
  /**
48607
- * * Field Name: AgentRun
48608
- * * Display Name: Agent Run
48609
- * * SQL Data Type: nvarchar(255)
48610
- */
48611
- get AgentRun() {
48612
- return this.Get('AgentRun');
48613
- }
48614
- /**
48615
49387
  * * Field Name: OriginalModel
48616
49388
  * * Display Name: Original Model
48617
49389
  * * SQL Data Type: nvarchar(50)
@@ -50518,6 +51290,177 @@ MJAISkillPermissionEntity = __decorate([
50518
51290
  RegisterClass(BaseEntity, 'MJ: AI Skill Permissions')
50519
51291
  ], MJAISkillPermissionEntity);
50520
51292
  export { MJAISkillPermissionEntity };
51293
+ /**
51294
+ * MJ: AI Skill Search Scopes - strongly typed entity sub-class
51295
+ * * Schema: __mj
51296
+ * * Base Table: AISkillSearchScope
51297
+ * * Base View: vwAISkillSearchScopes
51298
+ * * @description Search Scopes an AI Skill may reach when activated, honoured when AISkill.SearchScopeAccess = 'Assigned'. Mirrors AIAgentSearchScope: Status plus an optional StartAt/EndAt window time-box a grant, and Priority/IsDefault pick among several. An empty table means no skill grants any scope - the pre-migration behaviour.
51299
+ * * Primary Key: ID
51300
+ * @extends {BaseEntity}
51301
+ * @class
51302
+ * @public
51303
+ */
51304
+ let MJAISkillSearchScopeEntity = class MJAISkillSearchScopeEntity extends BaseEntity {
51305
+ /**
51306
+ * Loads the MJ: AI Skill Search Scopes record from the database
51307
+ * @param ID: string - primary key value to load the MJ: AI Skill Search Scopes record.
51308
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
51309
+ * @returns {Promise<boolean>} - true if successful, false otherwise
51310
+ * @public
51311
+ * @async
51312
+ * @memberof MJAISkillSearchScopeEntity
51313
+ * @method
51314
+ * @override
51315
+ */
51316
+ async Load(ID, EntityRelationshipsToLoad) {
51317
+ const compositeKey = new CompositeKey();
51318
+ compositeKey.KeyValuePairs.push({ FieldName: 'ID', Value: ID });
51319
+ return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
51320
+ }
51321
+ /**
51322
+ * * Field Name: ID
51323
+ * * Display Name: ID
51324
+ * * SQL Data Type: uniqueidentifier
51325
+ * * Default Value: newsequentialid()
51326
+ */
51327
+ get ID() {
51328
+ return this.Get('ID');
51329
+ }
51330
+ set ID(value) {
51331
+ this.Set('ID', value);
51332
+ }
51333
+ /**
51334
+ * * Field Name: SkillID
51335
+ * * Display Name: Skill ID
51336
+ * * SQL Data Type: uniqueidentifier
51337
+ * * Related Entity/Foreign Key: MJ: AI Skills (vwAISkills.ID)
51338
+ * * Description: The skill this grant belongs to.
51339
+ */
51340
+ get SkillID() {
51341
+ return this.Get('SkillID');
51342
+ }
51343
+ set SkillID(value) {
51344
+ this.Set('SkillID', value);
51345
+ }
51346
+ /**
51347
+ * * Field Name: SearchScopeID
51348
+ * * Display Name: Search Scope ID
51349
+ * * SQL Data Type: uniqueidentifier
51350
+ * * Related Entity/Foreign Key: MJ: Search Scopes (vwSearchScopes.ID)
51351
+ * * Description: The Search Scope this skill may reach.
51352
+ */
51353
+ get SearchScopeID() {
51354
+ return this.Get('SearchScopeID');
51355
+ }
51356
+ set SearchScopeID(value) {
51357
+ this.Set('SearchScopeID', value);
51358
+ }
51359
+ /**
51360
+ * * Field Name: Status
51361
+ * * Display Name: Status
51362
+ * * SQL Data Type: nvarchar(20)
51363
+ * * Default Value: Active
51364
+ * * Value List Type: List
51365
+ * * Possible Values
51366
+ * * Active
51367
+ * * Inactive
51368
+ * * Description: Active or Inactive. Inactive rows are ignored during resolution.
51369
+ */
51370
+ get Status() {
51371
+ return this.Get('Status');
51372
+ }
51373
+ set Status(value) {
51374
+ this.Set('Status', value);
51375
+ }
51376
+ /**
51377
+ * * Field Name: StartAt
51378
+ * * Display Name: Start At
51379
+ * * SQL Data Type: datetimeoffset
51380
+ * * Description: Optional start of the window in which this grant is honoured. NULL = no lower bound. Evaluated against the current time on every resolution, so a window opening or closing needs no cache invalidation.
51381
+ */
51382
+ get StartAt() {
51383
+ return this.Get('StartAt');
51384
+ }
51385
+ set StartAt(value) {
51386
+ this.Set('StartAt', value);
51387
+ }
51388
+ /**
51389
+ * * Field Name: EndAt
51390
+ * * Display Name: End At
51391
+ * * SQL Data Type: datetimeoffset
51392
+ * * Description: Optional end of the window in which this grant is honoured. NULL = no upper bound.
51393
+ */
51394
+ get EndAt() {
51395
+ return this.Get('EndAt');
51396
+ }
51397
+ set EndAt(value) {
51398
+ this.Set('EndAt', value);
51399
+ }
51400
+ /**
51401
+ * * Field Name: Priority
51402
+ * * Display Name: Priority
51403
+ * * SQL Data Type: int
51404
+ * * Description: Lower numbers win when several granted scopes are candidates and none is marked IsDefault.
51405
+ */
51406
+ get Priority() {
51407
+ return this.Get('Priority');
51408
+ }
51409
+ set Priority(value) {
51410
+ this.Set('Priority', value);
51411
+ }
51412
+ /**
51413
+ * * Field Name: IsDefault
51414
+ * * Display Name: Is Default
51415
+ * * SQL Data Type: bit
51416
+ * * Default Value: 0
51417
+ * * Description: When set, this scope is chosen for the skill ahead of Priority ordering.
51418
+ */
51419
+ get IsDefault() {
51420
+ return this.Get('IsDefault');
51421
+ }
51422
+ set IsDefault(value) {
51423
+ this.Set('IsDefault', value);
51424
+ }
51425
+ /**
51426
+ * * Field Name: __mj_CreatedAt
51427
+ * * Display Name: Created At
51428
+ * * SQL Data Type: datetimeoffset
51429
+ * * Default Value: getutcdate()
51430
+ */
51431
+ get __mj_CreatedAt() {
51432
+ return this.Get('__mj_CreatedAt');
51433
+ }
51434
+ /**
51435
+ * * Field Name: __mj_UpdatedAt
51436
+ * * Display Name: Updated At
51437
+ * * SQL Data Type: datetimeoffset
51438
+ * * Default Value: getutcdate()
51439
+ */
51440
+ get __mj_UpdatedAt() {
51441
+ return this.Get('__mj_UpdatedAt');
51442
+ }
51443
+ /**
51444
+ * * Field Name: Skill
51445
+ * * Display Name: Skill
51446
+ * * SQL Data Type: nvarchar(255)
51447
+ */
51448
+ get Skill() {
51449
+ return this.Get('Skill');
51450
+ }
51451
+ /**
51452
+ * * Field Name: SearchScope
51453
+ * * Display Name: Search Scope
51454
+ * * SQL Data Type: nvarchar(200)
51455
+ */
51456
+ get SearchScope() {
51457
+ return this.Get('SearchScope');
51458
+ }
51459
+ };
51460
+ MJAISkillSearchScopeEntity = __decorate([
51461
+ RegisterClass(BaseEntity, 'MJ: AI Skill Search Scopes')
51462
+ ], MJAISkillSearchScopeEntity);
51463
+ export { MJAISkillSearchScopeEntity };
50521
51464
  /**
50522
51465
  * MJ: AI Skill Sub Agents - strongly typed entity sub-class
50523
51466
  * * Schema: __mj
@@ -50800,6 +51743,23 @@ let MJAISkillEntity = class MJAISkillEntity extends BaseEntity {
50800
51743
  this.Set('ActivationMode', value);
50801
51744
  }
50802
51745
  /**
51746
+ * * Field Name: SearchScopeAccess
51747
+ * * Display Name: Search Scope Access
51748
+ * * SQL Data Type: nvarchar(20)
51749
+ * * Value List Type: List
51750
+ * * Possible Values
51751
+ * * All
51752
+ * * Assigned
51753
+ * * None
51754
+ * * Description: Which Search Scopes this skill may reach when activated. None = grants no retrieval scope; Assigned = only scopes listed in AISkillSearchScope; All = any active scope. NULL behaves as None so existing skills are unaffected. Mirrors AIAgent.SearchScopeAccess so a skill and an agent are interchangeable principals to SearchScopePermissionResolver.
51755
+ */
51756
+ get SearchScopeAccess() {
51757
+ return this.Get('SearchScopeAccess');
51758
+ }
51759
+ set SearchScopeAccess(value) {
51760
+ this.Set('SearchScopeAccess', value);
51761
+ }
51762
+ /**
50803
51763
  * * Field Name: CreatedByUser
50804
51764
  * * Display Name: Created By User
50805
51765
  * * SQL Data Type: nvarchar(100)
@@ -60413,7 +61373,113 @@ let MJContentItemAttributeEntity = class MJContentItemAttributeEntity extends Ba
60413
61373
  }
60414
61374
  /**
60415
61375
  * * Field Name: ContentItemID
60416
- * * Display Name: Content Item ID
61376
+ * * Display Name: Content Item ID
61377
+ * * SQL Data Type: uniqueidentifier
61378
+ * * Related Entity/Foreign Key: MJ: Content Items (vwContentItems.ID)
61379
+ */
61380
+ get ContentItemID() {
61381
+ return this.Get('ContentItemID');
61382
+ }
61383
+ set ContentItemID(value) {
61384
+ this.Set('ContentItemID', value);
61385
+ }
61386
+ /**
61387
+ * * Field Name: Name
61388
+ * * Display Name: Name
61389
+ * * SQL Data Type: nvarchar(100)
61390
+ */
61391
+ get Name() {
61392
+ return this.Get('Name');
61393
+ }
61394
+ set Name(value) {
61395
+ this.Set('Name', value);
61396
+ }
61397
+ /**
61398
+ * * Field Name: Value
61399
+ * * Display Name: Value
61400
+ * * SQL Data Type: nvarchar(MAX)
61401
+ * * Description: The extracted or assigned value for this attribute on the content item.
61402
+ */
61403
+ get Value() {
61404
+ return this.Get('Value');
61405
+ }
61406
+ set Value(value) {
61407
+ this.Set('Value', value);
61408
+ }
61409
+ /**
61410
+ * * Field Name: __mj_CreatedAt
61411
+ * * Display Name: Created At
61412
+ * * SQL Data Type: datetimeoffset
61413
+ * * Default Value: getutcdate()
61414
+ */
61415
+ get __mj_CreatedAt() {
61416
+ return this.Get('__mj_CreatedAt');
61417
+ }
61418
+ /**
61419
+ * * Field Name: __mj_UpdatedAt
61420
+ * * Display Name: Updated At
61421
+ * * SQL Data Type: datetimeoffset
61422
+ * * Default Value: getutcdate()
61423
+ */
61424
+ get __mj_UpdatedAt() {
61425
+ return this.Get('__mj_UpdatedAt');
61426
+ }
61427
+ /**
61428
+ * * Field Name: ContentItem
61429
+ * * Display Name: Content Item
61430
+ * * SQL Data Type: nvarchar(250)
61431
+ */
61432
+ get ContentItem() {
61433
+ return this.Get('ContentItem');
61434
+ }
61435
+ };
61436
+ MJContentItemAttributeEntity = __decorate([
61437
+ RegisterClass(BaseEntity, 'MJ: Content Item Attributes')
61438
+ ], MJContentItemAttributeEntity);
61439
+ export { MJContentItemAttributeEntity };
61440
+ /**
61441
+ * MJ: Content Item Chunks - strongly typed entity sub-class
61442
+ * * Schema: __mj
61443
+ * * Base Table: ContentItemChunk
61444
+ * * Base View: vwContentItemChunks
61445
+ * * @description Represents an individual chunk of a Content Item's text that was embedded as a distinct vector. When a Content Item is too large to embed as a single vector it is split into ordered chunks; each chunk becomes one row here, linking the stored vector back to the specific portion of the parent Content Item it represents.
61446
+ * * Primary Key: ID
61447
+ * @extends {BaseEntity}
61448
+ * @class
61449
+ * @public
61450
+ */
61451
+ let MJContentItemChunkEntity = class MJContentItemChunkEntity extends BaseEntity {
61452
+ /**
61453
+ * Loads the MJ: Content Item Chunks record from the database
61454
+ * @param ID: string - primary key value to load the MJ: Content Item Chunks record.
61455
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
61456
+ * @returns {Promise<boolean>} - true if successful, false otherwise
61457
+ * @public
61458
+ * @async
61459
+ * @memberof MJContentItemChunkEntity
61460
+ * @method
61461
+ * @override
61462
+ */
61463
+ async Load(ID, EntityRelationshipsToLoad) {
61464
+ const compositeKey = new CompositeKey();
61465
+ compositeKey.KeyValuePairs.push({ FieldName: 'ID', Value: ID });
61466
+ return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
61467
+ }
61468
+ /**
61469
+ * * Field Name: ID
61470
+ * * Display Name: ID
61471
+ * * SQL Data Type: uniqueidentifier
61472
+ * * Default Value: newsequentialid()
61473
+ */
61474
+ get ID() {
61475
+ return this.Get('ID');
61476
+ }
61477
+ set ID(value) {
61478
+ this.Set('ID', value);
61479
+ }
61480
+ /**
61481
+ * * Field Name: ContentItemID
61482
+ * * Display Name: Content Item
60417
61483
  * * SQL Data Type: uniqueidentifier
60418
61484
  * * Related Entity/Foreign Key: MJ: Content Items (vwContentItems.ID)
60419
61485
  */
@@ -60424,27 +61490,136 @@ let MJContentItemAttributeEntity = class MJContentItemAttributeEntity extends Ba
60424
61490
  this.Set('ContentItemID', value);
60425
61491
  }
60426
61492
  /**
60427
- * * Field Name: Name
60428
- * * Display Name: Name
60429
- * * SQL Data Type: nvarchar(100)
61493
+ * * Field Name: Sequence
61494
+ * * Display Name: Sequence
61495
+ * * SQL Data Type: int
61496
+ * * Description: Zero-based ordinal position of this chunk within the parent Content Item, preserving the original order in which the text was split.
60430
61497
  */
60431
- get Name() {
60432
- return this.Get('Name');
61498
+ get Sequence() {
61499
+ return this.Get('Sequence');
60433
61500
  }
60434
- set Name(value) {
60435
- this.Set('Name', value);
61501
+ set Sequence(value) {
61502
+ this.Set('Sequence', value);
60436
61503
  }
60437
61504
  /**
60438
- * * Field Name: Value
60439
- * * Display Name: Value
61505
+ * * Field Name: Text
61506
+ * * Display Name: Text
60440
61507
  * * SQL Data Type: nvarchar(MAX)
60441
- * * Description: The extracted or assigned value for this attribute on the content item.
61508
+ * * Description: The chunk of extracted text (from the parent Content Item) that was embedded to produce this chunk's vector. NULL for media-only segments (for example an image, or a video window with no transcript), where the embedded payload is the media itself and any readable representation lives in Description/Transcript.
60442
61509
  */
60443
- get Value() {
60444
- return this.Get('Value');
61510
+ get Text() {
61511
+ return this.Get('Text');
60445
61512
  }
60446
- set Value(value) {
60447
- this.Set('Value', value);
61513
+ set Text(value) {
61514
+ this.Set('Text', value);
61515
+ }
61516
+ /**
61517
+ * * Field Name: VectorRecordID
61518
+ * * Display Name: Vector Record ID
61519
+ * * SQL Data Type: nvarchar(100)
61520
+ * * Description: The identifier of this chunk's vector record in the vector database (e.g. Pinecone) — the deterministic key MemberJunction assigns and upserts the chunk's embedding under. Provides traceability from the chunk back to its stored vector.
61521
+ */
61522
+ get VectorRecordID() {
61523
+ return this.Get('VectorRecordID');
61524
+ }
61525
+ set VectorRecordID(value) {
61526
+ this.Set('VectorRecordID', value);
61527
+ }
61528
+ /**
61529
+ * * Field Name: EmbeddingStatus
61530
+ * * Display Name: Embedding Status
61531
+ * * SQL Data Type: nvarchar(20)
61532
+ * * Default Value: Pending
61533
+ * * Value List Type: List
61534
+ * * Possible Values
61535
+ * * Active
61536
+ * * Complete
61537
+ * * Failed
61538
+ * * Pending
61539
+ * * Processed
61540
+ * * Processing
61541
+ * * Skipped
61542
+ * * Description: Embedding lifecycle state of this chunk: Pending (default), Processing, Active, Complete, Processed, Failed, or Skipped.
61543
+ */
61544
+ get EmbeddingStatus() {
61545
+ return this.Get('EmbeddingStatus');
61546
+ }
61547
+ set EmbeddingStatus(value) {
61548
+ this.Set('EmbeddingStatus', value);
61549
+ }
61550
+ /**
61551
+ * * Field Name: TaggingStatus
61552
+ * * Display Name: Tagging Status
61553
+ * * SQL Data Type: nvarchar(20)
61554
+ * * Default Value: Pending
61555
+ * * Value List Type: List
61556
+ * * Possible Values
61557
+ * * Active
61558
+ * * Complete
61559
+ * * Failed
61560
+ * * Pending
61561
+ * * Processed
61562
+ * * Processing
61563
+ * * Skipped
61564
+ * * Description: Tagging lifecycle state of this chunk: Pending (default), Processing, Active, Complete, Processed, Failed, or Skipped.
61565
+ */
61566
+ get TaggingStatus() {
61567
+ return this.Get('TaggingStatus');
61568
+ }
61569
+ set TaggingStatus(value) {
61570
+ this.Set('TaggingStatus', value);
61571
+ }
61572
+ /**
61573
+ * * Field Name: DeleteStatus
61574
+ * * Display Name: Delete Status
61575
+ * * SQL Data Type: nvarchar(20)
61576
+ * * Value List Type: List
61577
+ * * Possible Values
61578
+ * * Deleted
61579
+ * * Pending
61580
+ * * Description: Deletion lifecycle state of this chunk's vector: NULL when not slated for deletion, Pending when vector removal is queued, or Deleted once the vector has been removed from the vector database.
61581
+ */
61582
+ get DeleteStatus() {
61583
+ return this.Get('DeleteStatus');
61584
+ }
61585
+ set DeleteStatus(value) {
61586
+ this.Set('DeleteStatus', value);
61587
+ }
61588
+ /**
61589
+ * * Field Name: LastEmbeddedAt
61590
+ * * Display Name: Last Embedded At
61591
+ * * SQL Data Type: datetimeoffset
61592
+ * * Description: Timestamp of the last successful embedding of this chunk.
61593
+ */
61594
+ get LastEmbeddedAt() {
61595
+ return this.Get('LastEmbeddedAt');
61596
+ }
61597
+ set LastEmbeddedAt(value) {
61598
+ this.Set('LastEmbeddedAt', value);
61599
+ }
61600
+ /**
61601
+ * * Field Name: LastTaggedAt
61602
+ * * Display Name: Last Tagged At
61603
+ * * SQL Data Type: datetimeoffset
61604
+ * * Description: Timestamp of the last successful tagging of this chunk.
61605
+ */
61606
+ get LastTaggedAt() {
61607
+ return this.Get('LastTaggedAt');
61608
+ }
61609
+ set LastTaggedAt(value) {
61610
+ this.Set('LastTaggedAt', value);
61611
+ }
61612
+ /**
61613
+ * * Field Name: LastDeletedAt
61614
+ * * Display Name: Last Deleted At
61615
+ * * SQL Data Type: datetimeoffset
61616
+ * * Description: Timestamp of the last successful deletion of this chunk's vector from the vector database.
61617
+ */
61618
+ get LastDeletedAt() {
61619
+ return this.Get('LastDeletedAt');
61620
+ }
61621
+ set LastDeletedAt(value) {
61622
+ this.Set('LastDeletedAt', value);
60448
61623
  }
60449
61624
  /**
60450
61625
  * * Field Name: __mj_CreatedAt
@@ -60465,6 +61640,147 @@ let MJContentItemAttributeEntity = class MJContentItemAttributeEntity extends Ba
60465
61640
  return this.Get('__mj_UpdatedAt');
60466
61641
  }
60467
61642
  /**
61643
+ * * Field Name: Modality
61644
+ * * Display Name: Modality
61645
+ * * SQL Data Type: nvarchar(20)
61646
+ * * Default Value: text
61647
+ * * Value List Type: List
61648
+ * * Possible Values
61649
+ * * audio
61650
+ * * image
61651
+ * * multimodal
61652
+ * * text
61653
+ * * video
61654
+ * * Description: The modality of this chunk's embedded payload: text (default), image, audio, video, or multimodal (text and media fused into a single vector). Determines which vector index the chunk's embedding belongs to, since a multimodal embedding model produces vectors of a different dimension than a text model, and is used at retrieval time to merge results per modality rather than taking a single global top-k.
61655
+ */
61656
+ get Modality() {
61657
+ return this.Get('Modality');
61658
+ }
61659
+ set Modality(value) {
61660
+ this.Set('Modality', value);
61661
+ }
61662
+ /**
61663
+ * * Field Name: StartOffset
61664
+ * * Display Name: Start Offset
61665
+ * * SQL Data Type: int
61666
+ * * Description: Inclusive character offset where this chunk begins within the parent Content Item's extracted text. Together with EndOffset this is the provenance link that resolves a search hit back to the exact passage in the source document. NULL for media segments, which are positioned by StartMs/EndMs instead.
61667
+ */
61668
+ get StartOffset() {
61669
+ return this.Get('StartOffset');
61670
+ }
61671
+ set StartOffset(value) {
61672
+ this.Set('StartOffset', value);
61673
+ }
61674
+ /**
61675
+ * * Field Name: EndOffset
61676
+ * * Display Name: End Offset
61677
+ * * SQL Data Type: int
61678
+ * * Description: Exclusive character offset where this chunk ends within the parent Content Item's extracted text. See StartOffset. NULL for media segments.
61679
+ */
61680
+ get EndOffset() {
61681
+ return this.Get('EndOffset');
61682
+ }
61683
+ set EndOffset(value) {
61684
+ this.Set('EndOffset', value);
61685
+ }
61686
+ /**
61687
+ * * Field Name: StartMs
61688
+ * * Display Name: Start (ms)
61689
+ * * SQL Data Type: int
61690
+ * * Description: Start of this chunk's time window, in milliseconds from the beginning of the parent audio or video asset. Set by transcript- or window-based segmentation; enables time-windowed playback deep-links from a search result (for example 14:22-15:05 of a session recording). NULL for text segments.
61691
+ */
61692
+ get StartMs() {
61693
+ return this.Get('StartMs');
61694
+ }
61695
+ set StartMs(value) {
61696
+ this.Set('StartMs', value);
61697
+ }
61698
+ /**
61699
+ * * Field Name: EndMs
61700
+ * * Display Name: End (ms)
61701
+ * * SQL Data Type: int
61702
+ * * Description: End of this chunk's time window, in milliseconds from the beginning of the parent audio or video asset. See StartMs. NULL for text segments.
61703
+ */
61704
+ get EndMs() {
61705
+ return this.Get('EndMs');
61706
+ }
61707
+ set EndMs(value) {
61708
+ this.Set('EndMs', value);
61709
+ }
61710
+ /**
61711
+ * * Field Name: PageNumber
61712
+ * * Display Name: Page Number
61713
+ * * SQL Data Type: int
61714
+ * * Description: One-based page number this chunk came from, for paginated sources such as PDFs or slide decks. Provides citation-grade provenance alongside the character offsets. NULL when the source is not paginated.
61715
+ */
61716
+ get PageNumber() {
61717
+ return this.Get('PageNumber');
61718
+ }
61719
+ set PageNumber(value) {
61720
+ this.Set('PageNumber', value);
61721
+ }
61722
+ /**
61723
+ * * Field Name: SegmentTitle
61724
+ * * Display Name: Segment Title
61725
+ * * SQL Data Type: nvarchar(500)
61726
+ * * Description: Human-readable label for this segment — a document heading for structure-based segmentation, or a generated chapter title for topic- and transcript-based segmentation. Displayed with search results and prepended to the embedded text so a chunk's vector carries its own topic.
61727
+ */
61728
+ get SegmentTitle() {
61729
+ return this.Get('SegmentTitle');
61730
+ }
61731
+ set SegmentTitle(value) {
61732
+ this.Set('SegmentTitle', value);
61733
+ }
61734
+ /**
61735
+ * * Field Name: Description
61736
+ * * Display Name: Description
61737
+ * * SQL Data Type: nvarchar(MAX)
61738
+ * * Description: An AI-generated description of this chunk's content, primarily for non-text segments. Retrieval of a media chunk otherwise yields only a pointer (an asset and a time window) that an agent cannot reason over; this column is the readable representation that an agent reads, a cross-encoder reranks, and lexical search matches. A short summary of it may be mirrored into the vector record's metadata for display and filtering, but the full text belongs here.
61739
+ */
61740
+ get Description() {
61741
+ return this.Get('Description');
61742
+ }
61743
+ set Description(value) {
61744
+ this.Set('Description', value);
61745
+ }
61746
+ /**
61747
+ * * Field Name: Transcript
61748
+ * * Display Name: Transcript
61749
+ * * SQL Data Type: nvarchar(MAX)
61750
+ * * Description: The verbatim transcript covering this chunk's time window, for audio and video segments, including speaker labels where the source provides them. Distinct from Description, which is a generated summary: this is what was actually said, and it is what makes a recording findable by lexical search.
61751
+ */
61752
+ get Transcript() {
61753
+ return this.Get('Transcript');
61754
+ }
61755
+ set Transcript(value) {
61756
+ this.Set('Transcript', value);
61757
+ }
61758
+ /**
61759
+ * * Field Name: SegmenterKey
61760
+ * * Display Name: Segmenter Key
61761
+ * * SQL Data Type: nvarchar(100)
61762
+ * * Description: Registration key of the segmentation strategy that produced this chunk (for example StructuralText, SemanticText, Transcript, or FixedWindow). Provenance: when a Content Source's configured strategy changes, this identifies which chunks were produced by the previous strategy and therefore need re-chunking.
61763
+ */
61764
+ get SegmenterKey() {
61765
+ return this.Get('SegmenterKey');
61766
+ }
61767
+ set SegmenterKey(value) {
61768
+ this.Set('SegmenterKey', value);
61769
+ }
61770
+ /**
61771
+ * * Field Name: ParentChunkID
61772
+ * * Display Name: Parent Chunk
61773
+ * * SQL Data Type: uniqueidentifier
61774
+ * * Related Entity/Foreign Key: MJ: Content Item Chunks (vwContentItemChunks.ID)
61775
+ * * Description: Optional self-reference to another chunk of the same Content Item that is the parent of this one, expressing a chapter to sub-chapter hierarchy — for example a five-minute chapter of a recording and the individual speaker turns within it, or a document section and its subsections. NULL for top-level segments.
61776
+ */
61777
+ get ParentChunkID() {
61778
+ return this.Get('ParentChunkID');
61779
+ }
61780
+ set ParentChunkID(value) {
61781
+ this.Set('ParentChunkID', value);
61782
+ }
61783
+ /**
60468
61784
  * * Field Name: ContentItem
60469
61785
  * * Display Name: Content Item
60470
61786
  * * SQL Data Type: nvarchar(250)
@@ -60472,11 +61788,19 @@ let MJContentItemAttributeEntity = class MJContentItemAttributeEntity extends Ba
60472
61788
  get ContentItem() {
60473
61789
  return this.Get('ContentItem');
60474
61790
  }
61791
+ /**
61792
+ * * Field Name: RootParentChunkID
61793
+ * * Display Name: Root Parent Chunk
61794
+ * * SQL Data Type: uniqueidentifier
61795
+ */
61796
+ get RootParentChunkID() {
61797
+ return this.Get('RootParentChunkID');
61798
+ }
60475
61799
  };
60476
- MJContentItemAttributeEntity = __decorate([
60477
- RegisterClass(BaseEntity, 'MJ: Content Item Attributes')
60478
- ], MJContentItemAttributeEntity);
60479
- export { MJContentItemAttributeEntity };
61800
+ MJContentItemChunkEntity = __decorate([
61801
+ RegisterClass(BaseEntity, 'MJ: Content Item Chunks')
61802
+ ], MJContentItemChunkEntity);
61803
+ export { MJContentItemChunkEntity };
60480
61804
  /**
60481
61805
  * MJ: Content Item Duplicates - strongly typed entity sub-class
60482
61806
  * * Schema: __mj
@@ -60883,7 +62207,7 @@ let MJContentItemEntity = class MJContentItemEntity extends BaseEntity {
60883
62207
  }
60884
62208
  /**
60885
62209
  * * Field Name: ContentSourceID
60886
- * * Display Name: Content Source ID
62210
+ * * Display Name: Content Source
60887
62211
  * * SQL Data Type: uniqueidentifier
60888
62212
  * * Related Entity/Foreign Key: MJ: Content Sources (vwContentSources.ID)
60889
62213
  */
@@ -60917,7 +62241,7 @@ let MJContentItemEntity = class MJContentItemEntity extends BaseEntity {
60917
62241
  }
60918
62242
  /**
60919
62243
  * * Field Name: ContentTypeID
60920
- * * Display Name: Content Type ID
62244
+ * * Display Name: Content Type
60921
62245
  * * SQL Data Type: uniqueidentifier
60922
62246
  * * Related Entity/Foreign Key: MJ: Content Types (vwContentTypes.ID)
60923
62247
  */
@@ -60929,7 +62253,7 @@ let MJContentItemEntity = class MJContentItemEntity extends BaseEntity {
60929
62253
  }
60930
62254
  /**
60931
62255
  * * Field Name: ContentSourceTypeID
60932
- * * Display Name: Content Source Type ID
62256
+ * * Display Name: Content Source Type
60933
62257
  * * SQL Data Type: uniqueidentifier
60934
62258
  * * Related Entity/Foreign Key: MJ: Content Source Types (vwContentSourceTypes.ID)
60935
62259
  */
@@ -60941,7 +62265,7 @@ let MJContentItemEntity = class MJContentItemEntity extends BaseEntity {
60941
62265
  }
60942
62266
  /**
60943
62267
  * * Field Name: ContentFileTypeID
60944
- * * Display Name: Content File Type ID
62268
+ * * Display Name: Content File Type
60945
62269
  * * SQL Data Type: uniqueidentifier
60946
62270
  * * Related Entity/Foreign Key: MJ: Content File Types (vwContentFileTypes.ID)
60947
62271
  */
@@ -60977,7 +62301,7 @@ let MJContentItemEntity = class MJContentItemEntity extends BaseEntity {
60977
62301
  }
60978
62302
  /**
60979
62303
  * * Field Name: Text
60980
- * * Display Name: Text
62304
+ * * Display Name: Extracted Text
60981
62305
  * * SQL Data Type: nvarchar(MAX)
60982
62306
  * * Description: The extracted text content from the source document or file.
60983
62307
  */
@@ -61007,7 +62331,7 @@ let MJContentItemEntity = class MJContentItemEntity extends BaseEntity {
61007
62331
  }
61008
62332
  /**
61009
62333
  * * Field Name: EntityRecordDocumentID
61010
- * * Display Name: Entity Record Document ID
62334
+ * * Display Name: Entity Record Document
61011
62335
  * * SQL Data Type: uniqueidentifier
61012
62336
  * * Related Entity/Foreign Key: MJ: Entity Record Documents (vwEntityRecordDocuments.ID)
61013
62337
  * * Description: For entity-sourced content items, links to the Entity Record Document snapshot that was rendered for this item. Provides traceability back to the source entity record via ERD.EntityID + ERD.RecordID. NULL for non-entity sources.
@@ -61052,7 +62376,7 @@ let MJContentItemEntity = class MJContentItemEntity extends BaseEntity {
61052
62376
  }
61053
62377
  /**
61054
62378
  * * Field Name: EmbeddingModelID
61055
- * * Display Name: Embedding Model ID
62379
+ * * Display Name: Embedding Model
61056
62380
  * * SQL Data Type: uniqueidentifier
61057
62381
  * * Related Entity/Foreign Key: MJ: AI Models (vwAIModels.ID)
61058
62382
  * * Description: The AI model used to generate the most recent embedding for this content item.
@@ -61096,8 +62420,45 @@ let MJContentItemEntity = class MJContentItemEntity extends BaseEntity {
61096
62420
  this.Set('LastTaggedAt', value);
61097
62421
  }
61098
62422
  /**
62423
+ * * Field Name: VectorRecordID
62424
+ * * Display Name: Vector Record ID
62425
+ * * SQL Data Type: nvarchar(100)
62426
+ * * Description: The identifier of this Content Item's vector record in the vector database (e.g. Pinecone) — the deterministic key MemberJunction assigns and upserts the embedding under when the item is embedded as a single vector. Provides traceability from the Content Item back to its stored vector. For chunked items, per-chunk identifiers are tracked on the ContentItemChunk entity instead.
62427
+ */
62428
+ get VectorRecordID() {
62429
+ return this.Get('VectorRecordID');
62430
+ }
62431
+ set VectorRecordID(value) {
62432
+ this.Set('VectorRecordID', value);
62433
+ }
62434
+ /**
62435
+ * * Field Name: ParentID
62436
+ * * Display Name: Parent Content
62437
+ * * SQL Data Type: uniqueidentifier
62438
+ * * Related Entity/Foreign Key: MJ: Content Items (vwContentItems.ID)
62439
+ * * Description: Optional self-reference to another Content Item that is the parent of this one, enabling a content-item hierarchy (e.g. a document and its sub-pages, or a site and its crawled pages). NULL for top-level items.
62440
+ */
62441
+ get ParentID() {
62442
+ return this.Get('ParentID');
62443
+ }
62444
+ set ParentID(value) {
62445
+ this.Set('ParentID', value);
62446
+ }
62447
+ /**
62448
+ * * Field Name: DisplayLink
62449
+ * * Display Name: Display Link
62450
+ * * SQL Data Type: nvarchar(2000)
62451
+ * * Description: Optional display/clickable URL for this Content Item (e.g. a canonical or human-facing link), distinct from the source URL used for ingestion.
62452
+ */
62453
+ get DisplayLink() {
62454
+ return this.Get('DisplayLink');
62455
+ }
62456
+ set DisplayLink(value) {
62457
+ this.Set('DisplayLink', value);
62458
+ }
62459
+ /**
61099
62460
  * * Field Name: ContentSource
61100
- * * Display Name: Content Source
62461
+ * * Display Name: Content Source Name
61101
62462
  * * SQL Data Type: nvarchar(255)
61102
62463
  */
61103
62464
  get ContentSource() {
@@ -61105,7 +62466,7 @@ let MJContentItemEntity = class MJContentItemEntity extends BaseEntity {
61105
62466
  }
61106
62467
  /**
61107
62468
  * * Field Name: ContentType
61108
- * * Display Name: Content Type
62469
+ * * Display Name: Content Type Name
61109
62470
  * * SQL Data Type: nvarchar(255)
61110
62471
  */
61111
62472
  get ContentType() {
@@ -61113,7 +62474,7 @@ let MJContentItemEntity = class MJContentItemEntity extends BaseEntity {
61113
62474
  }
61114
62475
  /**
61115
62476
  * * Field Name: ContentSourceType
61116
- * * Display Name: Content Source Type
62477
+ * * Display Name: Content Source Type Name
61117
62478
  * * SQL Data Type: nvarchar(255)
61118
62479
  */
61119
62480
  get ContentSourceType() {
@@ -61121,7 +62482,7 @@ let MJContentItemEntity = class MJContentItemEntity extends BaseEntity {
61121
62482
  }
61122
62483
  /**
61123
62484
  * * Field Name: ContentFileType
61124
- * * Display Name: Content File Type
62485
+ * * Display Name: Content File Type Name
61125
62486
  * * SQL Data Type: nvarchar(255)
61126
62487
  */
61127
62488
  get ContentFileType() {
@@ -61129,7 +62490,7 @@ let MJContentItemEntity = class MJContentItemEntity extends BaseEntity {
61129
62490
  }
61130
62491
  /**
61131
62492
  * * Field Name: EntityRecordDocument
61132
- * * Display Name: Entity Record Document
62493
+ * * Display Name: Entity Record Document Name
61133
62494
  * * SQL Data Type: nvarchar(450)
61134
62495
  */
61135
62496
  get EntityRecordDocument() {
@@ -61137,12 +62498,28 @@ let MJContentItemEntity = class MJContentItemEntity extends BaseEntity {
61137
62498
  }
61138
62499
  /**
61139
62500
  * * Field Name: EmbeddingModel
61140
- * * Display Name: Embedding Model
62501
+ * * Display Name: Embedding Model Name
61141
62502
  * * SQL Data Type: nvarchar(50)
61142
62503
  */
61143
62504
  get EmbeddingModel() {
61144
62505
  return this.Get('EmbeddingModel');
61145
62506
  }
62507
+ /**
62508
+ * * Field Name: Parent
62509
+ * * Display Name: Parent Content Name
62510
+ * * SQL Data Type: nvarchar(250)
62511
+ */
62512
+ get Parent() {
62513
+ return this.Get('Parent');
62514
+ }
62515
+ /**
62516
+ * * Field Name: RootParentID
62517
+ * * Display Name: Root Parent Content
62518
+ * * SQL Data Type: uniqueidentifier
62519
+ */
62520
+ get RootParentID() {
62521
+ return this.Get('RootParentID');
62522
+ }
61146
62523
  };
61147
62524
  MJContentItemEntity = __decorate([
61148
62525
  RegisterClass(BaseEntity, 'MJ: Content Items')
@@ -62358,8 +63735,32 @@ let MJContentSourceEntity = class MJContentSourceEntity extends BaseEntity {
62358
63735
  this.Set('ScheduledActionID', value);
62359
63736
  }
62360
63737
  /**
63738
+ * * Field Name: SegmenterKey
63739
+ * * Display Name: Segmenter Strategy
63740
+ * * SQL Data Type: nvarchar(100)
63741
+ * * Description: Registration key of the segmentation strategy used to split this source's content into embeddable chunks — for example StructuralText (document headings), AdaptiveBoundary (target size closing on the nearest natural break), SemanticText (LLM-detected topic boundaries), Transcript (audio/video chapters), PagedContent (one segment per page), or FixedWindow (uniform windows). NULL falls back to the Content Type's value, then to a built-in default.
63742
+ */
63743
+ get SegmenterKey() {
63744
+ return this.Get('SegmenterKey');
63745
+ }
63746
+ set SegmenterKey(value) {
63747
+ this.Set('SegmenterKey', value);
63748
+ }
63749
+ /**
63750
+ * * Field Name: CleanerKey
63751
+ * * Display Name: Cleaner Strategy
63752
+ * * SQL Data Type: nvarchar(100)
63753
+ * * Description: Registration key of the content-cleaning strategy applied to this source before segmentation — for example Html (CSS-selector-driven extraction that drops navigation, sidebars, and advertising) or PlainText (whitespace normalization only). Cleaning is separate from segmentation because the two change for different reasons: a new site template needs new selectors, not a new chunking strategy. NULL falls back to the Content Type's value, then to a default inferred from the content's mime type.
63754
+ */
63755
+ get CleanerKey() {
63756
+ return this.Get('CleanerKey');
63757
+ }
63758
+ set CleanerKey(value) {
63759
+ this.Set('CleanerKey', value);
63760
+ }
63761
+ /**
62361
63762
  * * Field Name: ContentType
62362
- * * Display Name: Content Type
63763
+ * * Display Name: Content Type Name
62363
63764
  * * SQL Data Type: nvarchar(255)
62364
63765
  */
62365
63766
  get ContentType() {
@@ -62367,7 +63768,7 @@ let MJContentSourceEntity = class MJContentSourceEntity extends BaseEntity {
62367
63768
  }
62368
63769
  /**
62369
63770
  * * Field Name: ContentSourceType
62370
- * * Display Name: Content Source Type
63771
+ * * Display Name: Content Source Type Name
62371
63772
  * * SQL Data Type: nvarchar(255)
62372
63773
  */
62373
63774
  get ContentSourceType() {
@@ -62375,7 +63776,7 @@ let MJContentSourceEntity = class MJContentSourceEntity extends BaseEntity {
62375
63776
  }
62376
63777
  /**
62377
63778
  * * Field Name: ContentFileType
62378
- * * Display Name: Content File Type
63779
+ * * Display Name: Content File Type Name
62379
63780
  * * SQL Data Type: nvarchar(255)
62380
63781
  */
62381
63782
  get ContentFileType() {
@@ -62383,7 +63784,7 @@ let MJContentSourceEntity = class MJContentSourceEntity extends BaseEntity {
62383
63784
  }
62384
63785
  /**
62385
63786
  * * Field Name: EmbeddingModel
62386
- * * Display Name: Embedding Model
63787
+ * * Display Name: Embedding Model Name
62387
63788
  * * SQL Data Type: nvarchar(50)
62388
63789
  */
62389
63790
  get EmbeddingModel() {
@@ -62391,7 +63792,7 @@ let MJContentSourceEntity = class MJContentSourceEntity extends BaseEntity {
62391
63792
  }
62392
63793
  /**
62393
63794
  * * Field Name: VectorIndex
62394
- * * Display Name: Vector Index
63795
+ * * Display Name: Vector Index Name
62395
63796
  * * SQL Data Type: nvarchar(255)
62396
63797
  */
62397
63798
  get VectorIndex() {
@@ -62399,7 +63800,7 @@ let MJContentSourceEntity = class MJContentSourceEntity extends BaseEntity {
62399
63800
  }
62400
63801
  /**
62401
63802
  * * Field Name: Entity
62402
- * * Display Name: Entity
63803
+ * * Display Name: Entity Name
62403
63804
  * * SQL Data Type: nvarchar(255)
62404
63805
  */
62405
63806
  get Entity() {
@@ -62407,7 +63808,7 @@ let MJContentSourceEntity = class MJContentSourceEntity extends BaseEntity {
62407
63808
  }
62408
63809
  /**
62409
63810
  * * Field Name: EntityDocument
62410
- * * Display Name: Entity Document
63811
+ * * Display Name: Entity Document Name
62411
63812
  * * SQL Data Type: nvarchar(250)
62412
63813
  */
62413
63814
  get EntityDocument() {
@@ -62415,7 +63816,7 @@ let MJContentSourceEntity = class MJContentSourceEntity extends BaseEntity {
62415
63816
  }
62416
63817
  /**
62417
63818
  * * Field Name: ScheduledAction
62418
- * * Display Name: Scheduled Action
63819
+ * * Display Name: Scheduled Action Name
62419
63820
  * * SQL Data Type: nvarchar(255)
62420
63821
  */
62421
63822
  get ScheduledAction() {
@@ -62714,6 +64115,30 @@ let MJContentTypeEntity = class MJContentTypeEntity extends BaseEntity {
62714
64115
  this._ConfigurationObject_lastRaw = raw;
62715
64116
  }
62716
64117
  /**
64118
+ * * Field Name: SegmenterKey
64119
+ * * Display Name: Segmenter Strategy
64120
+ * * SQL Data Type: nvarchar(100)
64121
+ * * Description: Default segmentation strategy for content of this type, used when a Content Source does not specify its own SegmenterKey. See ContentSource.SegmenterKey for the available strategies.
64122
+ */
64123
+ get SegmenterKey() {
64124
+ return this.Get('SegmenterKey');
64125
+ }
64126
+ set SegmenterKey(value) {
64127
+ this.Set('SegmenterKey', value);
64128
+ }
64129
+ /**
64130
+ * * Field Name: CleanerKey
64131
+ * * Display Name: Cleaner Strategy
64132
+ * * SQL Data Type: nvarchar(100)
64133
+ * * Description: Default content-cleaning strategy for content of this type, used when a Content Source does not specify its own CleanerKey. See ContentSource.CleanerKey.
64134
+ */
64135
+ get CleanerKey() {
64136
+ return this.Get('CleanerKey');
64137
+ }
64138
+ set CleanerKey(value) {
64139
+ this.Set('CleanerKey', value);
64140
+ }
64141
+ /**
62717
64142
  * * Field Name: AIModel
62718
64143
  * * Display Name: AI Model Name
62719
64144
  * * SQL Data Type: nvarchar(50)
@@ -63243,6 +64668,111 @@ MJConversationArtifactEntity = __decorate([
63243
64668
  RegisterClass(BaseEntity, 'MJ: Conversation Artifacts')
63244
64669
  ], MJConversationArtifactEntity);
63245
64670
  export { MJConversationArtifactEntity };
64671
+ /**
64672
+ * MJ: Conversation Compaction Runs - strongly typed entity sub-class
64673
+ * * Schema: __mj
64674
+ * * Base Table: ConversationCompactionRun
64675
+ * * Base View: vwConversationCompactionRuns
64676
+ * * @description Links a conversation detail boundary row to the AI Prompt Run that produced its compaction summary. Audit-only join table replacing the former ConversationDetail.SummaryPromptRunID FK to break the CodeGen cycle.
64677
+ * * Primary Key: ID
64678
+ * @extends {BaseEntity}
64679
+ * @class
64680
+ * @public
64681
+ */
64682
+ let MJConversationCompactionRunEntity = class MJConversationCompactionRunEntity extends BaseEntity {
64683
+ /**
64684
+ * Loads the MJ: Conversation Compaction Runs record from the database
64685
+ * @param ID: string - primary key value to load the MJ: Conversation Compaction Runs record.
64686
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
64687
+ * @returns {Promise<boolean>} - true if successful, false otherwise
64688
+ * @public
64689
+ * @async
64690
+ * @memberof MJConversationCompactionRunEntity
64691
+ * @method
64692
+ * @override
64693
+ */
64694
+ async Load(ID, EntityRelationshipsToLoad) {
64695
+ const compositeKey = new CompositeKey();
64696
+ compositeKey.KeyValuePairs.push({ FieldName: 'ID', Value: ID });
64697
+ return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
64698
+ }
64699
+ /**
64700
+ * * Field Name: ID
64701
+ * * Display Name: ID
64702
+ * * SQL Data Type: uniqueidentifier
64703
+ * * Default Value: newsequentialid()
64704
+ */
64705
+ get ID() {
64706
+ return this.Get('ID');
64707
+ }
64708
+ set ID(value) {
64709
+ this.Set('ID', value);
64710
+ }
64711
+ /**
64712
+ * * Field Name: ConversationDetailID
64713
+ * * Display Name: Conversation Detail
64714
+ * * SQL Data Type: uniqueidentifier
64715
+ * * Related Entity/Foreign Key: MJ: Conversation Details (vwConversationDetails.ID)
64716
+ * * Description: The conversation detail row whose SummaryOfEarlierConversation was produced by this compaction run.
64717
+ */
64718
+ get ConversationDetailID() {
64719
+ return this.Get('ConversationDetailID');
64720
+ }
64721
+ set ConversationDetailID(value) {
64722
+ this.Set('ConversationDetailID', value);
64723
+ }
64724
+ /**
64725
+ * * Field Name: PromptRunID
64726
+ * * Display Name: Prompt Run
64727
+ * * SQL Data Type: uniqueidentifier
64728
+ * * Related Entity/Foreign Key: MJ: AI Prompt Runs (vwAIPromptRuns.ID)
64729
+ * * Description: The AI Prompt Run that generated the compaction summary (model, tokens, cost, prompt version).
64730
+ */
64731
+ get PromptRunID() {
64732
+ return this.Get('PromptRunID');
64733
+ }
64734
+ set PromptRunID(value) {
64735
+ this.Set('PromptRunID', value);
64736
+ }
64737
+ /**
64738
+ * * Field Name: __mj_CreatedAt
64739
+ * * Display Name: Created At
64740
+ * * SQL Data Type: datetimeoffset
64741
+ * * Default Value: getutcdate()
64742
+ */
64743
+ get __mj_CreatedAt() {
64744
+ return this.Get('__mj_CreatedAt');
64745
+ }
64746
+ /**
64747
+ * * Field Name: __mj_UpdatedAt
64748
+ * * Display Name: Updated At
64749
+ * * SQL Data Type: datetimeoffset
64750
+ * * Default Value: getutcdate()
64751
+ */
64752
+ get __mj_UpdatedAt() {
64753
+ return this.Get('__mj_UpdatedAt');
64754
+ }
64755
+ /**
64756
+ * * Field Name: ConversationDetail
64757
+ * * Display Name: Conversation Detail Name
64758
+ * * SQL Data Type: nvarchar(100)
64759
+ */
64760
+ get ConversationDetail() {
64761
+ return this.Get('ConversationDetail');
64762
+ }
64763
+ /**
64764
+ * * Field Name: PromptRun
64765
+ * * Display Name: Prompt Run Name
64766
+ * * SQL Data Type: nvarchar(255)
64767
+ */
64768
+ get PromptRun() {
64769
+ return this.Get('PromptRun');
64770
+ }
64771
+ };
64772
+ MJConversationCompactionRunEntity = __decorate([
64773
+ RegisterClass(BaseEntity, 'MJ: Conversation Compaction Runs')
64774
+ ], MJConversationCompactionRunEntity);
64775
+ export { MJConversationCompactionRunEntity };
63246
64776
  /**
63247
64777
  * MJ: Conversation Detail Artifacts - strongly typed entity sub-class
63248
64778
  * * Schema: __mj
@@ -63978,7 +65508,7 @@ let MJConversationDetailEntity = class MJConversationDetailEntity extends BaseEn
63978
65508
  }
63979
65509
  /**
63980
65510
  * * Field Name: HiddenToUser
63981
- * * Display Name: Hidden to User
65511
+ * * Display Name: Hidden To User
63982
65512
  * * SQL Data Type: bit
63983
65513
  * * Default Value: 0
63984
65514
  * * Description: Flag indicating if this message should be hidden from end users (system messages, function calls, etc.).
@@ -64045,7 +65575,7 @@ let MJConversationDetailEntity = class MJConversationDetailEntity extends BaseEn
64045
65575
  }
64046
65576
  /**
64047
65577
  * * Field Name: SummaryOfEarlierConversation
64048
- * * Display Name: Summary of Earlier Conversation
65578
+ * * Display Name: Summary Of Earlier Conversation
64049
65579
  * * SQL Data Type: nvarchar(MAX)
64050
65580
  * * Description: This column optionally stores a summary of the entire conversation leading up to this particular conversation detail record. It is used in long-running conversations to optimize performance by summarizing earlier parts.
64051
65581
  */
@@ -64057,7 +65587,7 @@ let MJConversationDetailEntity = class MJConversationDetailEntity extends BaseEn
64057
65587
  }
64058
65588
  /**
64059
65589
  * * Field Name: UserID
64060
- * * Display Name: User ID
65590
+ * * Display Name: User
64061
65591
  * * SQL Data Type: uniqueidentifier
64062
65592
  * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)
64063
65593
  * * Description: This field, when populated, overrides the UserID at the Conversation level to specify a different user created the message.
@@ -64070,7 +65600,7 @@ let MJConversationDetailEntity = class MJConversationDetailEntity extends BaseEn
64070
65600
  }
64071
65601
  /**
64072
65602
  * * Field Name: ArtifactID
64073
- * * Display Name: Artifact ID
65603
+ * * Display Name: Artifact
64074
65604
  * *
64075
65605
  * * @deprecated This field is deprecated and will be removed in a future version. Using it will result in console warnings.SQL Data Type: uniqueidentifier
64076
65606
  * * Related Entity/Foreign Key: MJ: Conversation Artifacts (vwConversationArtifacts.ID)
@@ -64084,7 +65614,7 @@ let MJConversationDetailEntity = class MJConversationDetailEntity extends BaseEn
64084
65614
  }
64085
65615
  /**
64086
65616
  * * Field Name: ArtifactVersionID
64087
- * * Display Name: Artifact Version ID
65617
+ * * Display Name: Artifact Version
64088
65618
  * *
64089
65619
  * * @deprecated This field is deprecated and will be removed in a future version. Using it will result in console warnings.SQL Data Type: uniqueidentifier
64090
65620
  * * Related Entity/Foreign Key: MJ: Conversation Artifact Versions (vwConversationArtifactVersions.ID)
@@ -64098,7 +65628,7 @@ let MJConversationDetailEntity = class MJConversationDetailEntity extends BaseEn
64098
65628
  }
64099
65629
  /**
64100
65630
  * * Field Name: CompletionTime
64101
- * * Display Name: Completion Time (ms)
65631
+ * * Display Name: Completion Time
64102
65632
  * * SQL Data Type: bigint
64103
65633
  * * Description: Duration in milliseconds representing how long the AI response processing took to complete for this conversation detail.
64104
65634
  */
@@ -64123,7 +65653,7 @@ let MJConversationDetailEntity = class MJConversationDetailEntity extends BaseEn
64123
65653
  }
64124
65654
  /**
64125
65655
  * * Field Name: ParentID
64126
- * * Display Name: Parent ID
65656
+ * * Display Name: Parent
64127
65657
  * * SQL Data Type: uniqueidentifier
64128
65658
  * * Related Entity/Foreign Key: MJ: Conversation Details (vwConversationDetails.ID)
64129
65659
  * * Description: Optional reference to parent message for threaded conversations. NULL for top-level messages.
@@ -64136,7 +65666,7 @@ let MJConversationDetailEntity = class MJConversationDetailEntity extends BaseEn
64136
65666
  }
64137
65667
  /**
64138
65668
  * * Field Name: AgentID
64139
- * * Display Name: Agent ID
65669
+ * * Display Name: Agent
64140
65670
  * * SQL Data Type: uniqueidentifier
64141
65671
  * * Related Entity/Foreign Key: MJ: AI Agents (vwAIAgents.ID)
64142
65672
  * * Description: Denormalized agent ID for quick lookup of agent name and icon without joining through AgentRun
@@ -64180,7 +65710,7 @@ let MJConversationDetailEntity = class MJConversationDetailEntity extends BaseEn
64180
65710
  }
64181
65711
  /**
64182
65712
  * * Field Name: TestRunID
64183
- * * Display Name: Test Run ID
65713
+ * * Display Name: Test Run
64184
65714
  * * SQL Data Type: uniqueidentifier
64185
65715
  * * Related Entity/Foreign Key: MJ: Test Runs (vwTestRuns.ID)
64186
65716
  * * Description: Optional Foreign Key - Links this conversation detail to a test run if this message was part of a test conversation. Allows filtering and analyzing test-specific conversation turns.
@@ -64242,7 +65772,7 @@ let MJConversationDetailEntity = class MJConversationDetailEntity extends BaseEn
64242
65772
  }
64243
65773
  /**
64244
65774
  * * Field Name: AgentSessionID
64245
- * * Display Name: Agent Session ID
65775
+ * * Display Name: Agent Session
64246
65776
  * * SQL Data Type: uniqueidentifier
64247
65777
  * * Related Entity/Foreign Key: MJ: AI Agent Sessions (vwAIAgentSessions.ID)
64248
65778
  * * Description: Links this message to the AIAgentSession that was active when it was created. NULL for messages typed in standard text chat outside any live session. Lets the conversation timeline group a sessions messages into a single collapsible block.
@@ -64267,7 +65797,7 @@ let MJConversationDetailEntity = class MJConversationDetailEntity extends BaseEn
64267
65797
  }
64268
65798
  /**
64269
65799
  * * Field Name: UtteranceStartMs
64270
- * * Display Name: Utterance Start (ms)
65800
+ * * Display Name: Utterance Start Ms
64271
65801
  * * SQL Data Type: int
64272
65802
  * * Description: Precise media-relative start of this turn, in integer milliseconds from the recording t0 (AIAgentSession.RecordingStartedAt). Populated only when the realtime driver supplies frame timing; NULL otherwise (fall back to __mj_CreatedAt - t0). Used by the evidence player for click-to-seek.
64273
65803
  */
@@ -64279,7 +65809,7 @@ let MJConversationDetailEntity = class MJConversationDetailEntity extends BaseEn
64279
65809
  }
64280
65810
  /**
64281
65811
  * * Field Name: UtteranceEndMs
64282
- * * Display Name: Utterance End (ms)
65812
+ * * Display Name: Utterance End Ms
64283
65813
  * * SQL Data Type: int
64284
65814
  * * Description: Precise media-relative end of this turn, in integer milliseconds from the recording t0 (AIAgentSession.RecordingStartedAt). Populated only when the realtime driver supplies frame timing; NULL otherwise. Used by the evidence player for click-to-seek.
64285
65815
  */
@@ -64307,6 +65837,16 @@ let MJConversationDetailEntity = class MJConversationDetailEntity extends BaseEn
64307
65837
  this.Set('MediaType', value);
64308
65838
  }
64309
65839
  /**
65840
+ * * Field Name: Sequence
65841
+ * * Display Name: Sequence
65842
+ * * SQL Data Type: int
65843
+ * * Default Value: 0
65844
+ * * Description: Monotonic, per-conversation ordinal assigned on insert (1-based). Provides a stable symbolic handle used by conversation-history retrieval tools and by the sequence markers embedded in compaction summaries. A summary stored in SummaryOfEarlierConversation on a given row covers all rows with a lower Sequence in the same conversation.
65845
+ */
65846
+ get Sequence() {
65847
+ return this.Get('Sequence');
65848
+ }
65849
+ /**
64310
65850
  * * Field Name: Conversation
64311
65851
  * * Display Name: Conversation
64312
65852
  * * SQL Data Type: nvarchar(255)
@@ -64364,7 +65904,7 @@ let MJConversationDetailEntity = class MJConversationDetailEntity extends BaseEn
64364
65904
  }
64365
65905
  /**
64366
65906
  * * Field Name: RootParentID
64367
- * * Display Name: Root Parent ID
65907
+ * * Display Name: Root Parent
64368
65908
  * * SQL Data Type: uniqueidentifier
64369
65909
  */
64370
65910
  get RootParentID() {
@@ -97161,6 +98701,43 @@ let MJSearchExecutionLogEntity = class MJSearchExecutionLogEntity extends BaseEn
97161
98701
  return this.Get('__mj_UpdatedAt');
97162
98702
  }
97163
98703
  /**
98704
+ * * Field Name: AISkillID
98705
+ * * Display Name: AI Skill ID
98706
+ * * SQL Data Type: uniqueidentifier
98707
+ * * Related Entity/Foreign Key: MJ: AI Skills (vwAISkills.ID)
98708
+ * * Description: The AI Skill on whose behalf this search ran, or NULL for a search with no active skill. Mirrors AIAgentID: since a skill is a search principal in its own right (AISkill.SearchScopeAccess plus MJ: AI Skill Search Scopes rows can reach a scope the user's own roles do not grant), the log must record which skill was active or the entitlement decision cannot be reconstructed.
98709
+ */
98710
+ get AISkillID() {
98711
+ return this.Get('AISkillID');
98712
+ }
98713
+ set AISkillID(value) {
98714
+ this.Set('AISkillID', value);
98715
+ }
98716
+ /**
98717
+ * * Field Name: PrimaryScopeRecordID
98718
+ * * Display Name: Primary Scope Record ID
98719
+ * * SQL Data Type: uniqueidentifier
98720
+ * * Description: The tenant this search ran for, taken from SearchContext.PrimaryScopeRecordID. Lets a multi-tenant deployment partition, filter and retain search audit history per customer. NULL for untenanted searches. Named for the existing primary-scope concept rather than OrganizationID because a scope's primary scope may be a Company, Client or Practice.
98721
+ */
98722
+ get PrimaryScopeRecordID() {
98723
+ return this.Get('PrimaryScopeRecordID');
98724
+ }
98725
+ set PrimaryScopeRecordID(value) {
98726
+ this.Set('PrimaryScopeRecordID', value);
98727
+ }
98728
+ /**
98729
+ * * Field Name: ScopeDecisionJSON
98730
+ * * Display Name: Scope Decision JSON
98731
+ * * SQL Data Type: nvarchar(MAX)
98732
+ * * Description: Serialized ScopeExplanation recording WHY this search could reach what it reached: the entitlement decision and the grant that produced it, every dimension with its provenance (CallerSupplied / ServerDerived / Default / DiscardedCaller / Absent), and each lane's rendered filter with its active-or-skipped status and reason. Identical in shape to the value returned by SearchEngine.ExplainScope(), so the dry-run an administrator previews before running a search is the same structure the audit log stores afterwards. NULL when the engine did not capture a decision (older writers, or a failure before scope resolution).
98733
+ */
98734
+ get ScopeDecisionJSON() {
98735
+ return this.Get('ScopeDecisionJSON');
98736
+ }
98737
+ set ScopeDecisionJSON(value) {
98738
+ this.Set('ScopeDecisionJSON', value);
98739
+ }
98740
+ /**
97164
98741
  * * Field Name: SearchScope
97165
98742
  * * Display Name: Search Scope Name
97166
98743
  * * SQL Data Type: nvarchar(200)
@@ -97184,6 +98761,14 @@ let MJSearchExecutionLogEntity = class MJSearchExecutionLogEntity extends BaseEn
97184
98761
  get AIAgent() {
97185
98762
  return this.Get('AIAgent');
97186
98763
  }
98764
+ /**
98765
+ * * Field Name: AISkill
98766
+ * * Display Name: AI Skill
98767
+ * * SQL Data Type: nvarchar(255)
98768
+ */
98769
+ get AISkill() {
98770
+ return this.Get('AISkill');
98771
+ }
97187
98772
  };
97188
98773
  MJSearchExecutionLogEntity = __decorate([
97189
98774
  RegisterClass(BaseEntity, 'MJ: Search Execution Logs')
@@ -97543,6 +99128,18 @@ let MJSearchScopeEntityEntity = class MJSearchScopeEntityEntity extends BaseEnti
97543
99128
  return this.Get('__mj_UpdatedAt');
97544
99129
  }
97545
99130
  /**
99131
+ * * Field Name: RequiredMetadataKeys
99132
+ * * Display Name: Required Metadata Keys
99133
+ * * SQL Data Type: nvarchar(MAX)
99134
+ * * Description: JSON array of column or alias names the rendered ExtraFilter MUST reference for this lane to be considered safe, e.g. ["OrganizationID","ContentSourceID"]. Checked against the RENDERED filter at search time: if one is missing the lane is SKIPPED rather than queried, because a partially-rendered filter (an {% if %} clause dropped when its dimension was absent or discarded) is still valid SQL and silently widens the search. Same concept and same engine check as SearchScopeExternalIndex.RequiredMetadataKeys, applied to the SQL lane. NULL = no contract declared, which is the pre-migration behaviour.
99135
+ */
99136
+ get RequiredMetadataKeys() {
99137
+ return this.Get('RequiredMetadataKeys');
99138
+ }
99139
+ set RequiredMetadataKeys(value) {
99140
+ this.Set('RequiredMetadataKeys', value);
99141
+ }
99142
+ /**
97546
99143
  * * Field Name: SearchScope
97547
99144
  * * Display Name: Search Scope
97548
99145
  * * SQL Data Type: nvarchar(200)
@@ -97733,6 +99330,18 @@ let MJSearchScopeExternalIndexEntity = class MJSearchScopeExternalIndexEntity ex
97733
99330
  return this.Get('__mj_UpdatedAt');
97734
99331
  }
97735
99332
  /**
99333
+ * * Field Name: RequiredMetadataKeys
99334
+ * * Display Name: Required Metadata Keys
99335
+ * * SQL Data Type: nvarchar(MAX)
99336
+ * * Description: JSON array of metadata key names the rendered MetadataFilter MUST constrain on for this lane to be considered safe, e.g. ["OrganizationID","ContentSourceID"]. Checked against the RENDERED filter at search time: if a key is missing the lane is SKIPPED rather than queried, because a partially-rendered filter silently widens the search. This also documents the ingest contract — these are the labels the writer must stamp on every document in the index, since a filter on a key that was never written either matches nothing or (on providers that ignore unknown keys) matches everything. NULL = no contract declared, which is the pre-migration behaviour.
99337
+ */
99338
+ get RequiredMetadataKeys() {
99339
+ return this.Get('RequiredMetadataKeys');
99340
+ }
99341
+ set RequiredMetadataKeys(value) {
99342
+ this.Set('RequiredMetadataKeys', value);
99343
+ }
99344
+ /**
97736
99345
  * * Field Name: SearchScope
97737
99346
  * * Display Name: Search Scope
97738
99347
  * * SQL Data Type: nvarchar(200)
@@ -97899,6 +99508,42 @@ let MJSearchScopePermissionEntity = class MJSearchScopePermissionEntity extends
97899
99508
  return this.Get('__mj_UpdatedAt');
97900
99509
  }
97901
99510
  /**
99511
+ * * Field Name: StartAt
99512
+ * * Display Name: Start At
99513
+ * * SQL Data Type: datetimeoffset
99514
+ * * Description: Optional start of the window in which this grant applies. NULL = no lower bound. SearchScopePermission was the only member of this family without a time window, so temporary grants previously needed a bespoke mechanism.
99515
+ */
99516
+ get StartAt() {
99517
+ return this.Get('StartAt');
99518
+ }
99519
+ set StartAt(value) {
99520
+ this.Set('StartAt', value);
99521
+ }
99522
+ /**
99523
+ * * Field Name: EndAt
99524
+ * * Display Name: End At
99525
+ * * SQL Data Type: datetimeoffset
99526
+ * * Description: Optional end of the window in which this grant applies. NULL = no upper bound.
99527
+ */
99528
+ get EndAt() {
99529
+ return this.Get('EndAt');
99530
+ }
99531
+ set EndAt(value) {
99532
+ this.Set('EndAt', value);
99533
+ }
99534
+ /**
99535
+ * * Field Name: PrimaryScopeRecordID
99536
+ * * Display Name: Primary Scope Record ID
99537
+ * * SQL Data Type: uniqueidentifier
99538
+ * * Description: Optional tenant this grant is limited to, matched against SearchContext.PrimaryScopeRecordID at search time and type-checkable against the scope's own PrimaryScopeEntityID. NULL = applies to every tenant, which is the pre-migration behaviour for all existing rows. Deliberately NOT called OrganizationID: MJ is domain-agnostic and a scope's primary scope may be a Company, Client or Practice, so this reuses the existing primary-scope concept rather than inventing a parallel tenancy column.
99539
+ */
99540
+ get PrimaryScopeRecordID() {
99541
+ return this.Get('PrimaryScopeRecordID');
99542
+ }
99543
+ set PrimaryScopeRecordID(value) {
99544
+ this.Set('PrimaryScopeRecordID', value);
99545
+ }
99546
+ /**
97902
99547
  * * Field Name: SearchScope
97903
99548
  * * Display Name: Search Scope Name
97904
99549
  * * SQL Data Type: nvarchar(200)
@@ -104942,6 +106587,208 @@ MJTestEntity = __decorate([
104942
106587
  RegisterClass(BaseEntity, 'MJ: Tests')
104943
106588
  ], MJTestEntity);
104944
106589
  export { MJTestEntity };
106590
+ /**
106591
+ * MJ: Themes - strongly typed entity sub-class
106592
+ * * Schema: __mj
106593
+ * * Base Table: Theme
106594
+ * * Base View: vwThemes
106595
+ * * @description A named brand theme. Stores ~8 brand seeds (color hue anchors, neutral character, vibrancy, shape, depth, type, viz palette) as JSON; the full --mj-* design-token contract is derived from the seeds at load. A theme is a brand — light/dark is the user's mode layered under it, so a theme carries no per-mode values.
106596
+ * * Primary Key: ID
106597
+ * @extends {BaseEntity}
106598
+ * @class
106599
+ * @public
106600
+ */
106601
+ let MJThemeEntity = class MJThemeEntity extends BaseEntity {
106602
+ /**
106603
+ * Loads the MJ: Themes record from the database
106604
+ * @param ID: string - primary key value to load the MJ: Themes record.
106605
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
106606
+ * @returns {Promise<boolean>} - true if successful, false otherwise
106607
+ * @public
106608
+ * @async
106609
+ * @memberof MJThemeEntity
106610
+ * @method
106611
+ * @override
106612
+ */
106613
+ async Load(ID, EntityRelationshipsToLoad) {
106614
+ const compositeKey = new CompositeKey();
106615
+ compositeKey.KeyValuePairs.push({ FieldName: 'ID', Value: ID });
106616
+ return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
106617
+ }
106618
+ /**
106619
+ * * Field Name: ID
106620
+ * * Display Name: ID
106621
+ * * SQL Data Type: uniqueidentifier
106622
+ * * Default Value: newsequentialid()
106623
+ */
106624
+ get ID() {
106625
+ return this.Get('ID');
106626
+ }
106627
+ set ID(value) {
106628
+ this.Set('ID', value);
106629
+ }
106630
+ /**
106631
+ * * Field Name: Name
106632
+ * * Display Name: Name
106633
+ * * SQL Data Type: nvarchar(100)
106634
+ * * Description: Display name for the theme (unique).
106635
+ */
106636
+ get Name() {
106637
+ return this.Get('Name');
106638
+ }
106639
+ set Name(value) {
106640
+ this.Set('Name', value);
106641
+ }
106642
+ /**
106643
+ * * Field Name: Description
106644
+ * * Display Name: Description
106645
+ * * SQL Data Type: nvarchar(MAX)
106646
+ * * Description: Optional description of the theme.
106647
+ */
106648
+ get Description() {
106649
+ return this.Get('Description');
106650
+ }
106651
+ set Description(value) {
106652
+ this.Set('Description', value);
106653
+ }
106654
+ /**
106655
+ * * Field Name: Seeds
106656
+ * * Display Name: Seeds
106657
+ * * SQL Data Type: nvarchar(MAX)
106658
+ * * Description: Brand seeds as JSON (the ThemeSeeds shape from @memberjunction/theme-engine): primary/accent/tertiary hue anchors, neutralChroma, vibrancy, radius, depth, fontFamily, and an optional vizPalette override. Source of truth — the full token contract is derived from this, not stored.
106659
+ */
106660
+ get Seeds() {
106661
+ return this.Get('Seeds');
106662
+ }
106663
+ set Seeds(value) {
106664
+ this.Set('Seeds', value);
106665
+ }
106666
+ /**
106667
+ * * Field Name: LightMarkURL
106668
+ * * Display Name: Light Mode Logo
106669
+ * * SQL Data Type: nvarchar(1000)
106670
+ * * Description: Public URL of the logo mark for light surfaces. Logos are variant uploads, never recolored.
106671
+ */
106672
+ get LightMarkURL() {
106673
+ return this.Get('LightMarkURL');
106674
+ }
106675
+ set LightMarkURL(value) {
106676
+ this.Set('LightMarkURL', value);
106677
+ }
106678
+ /**
106679
+ * * Field Name: DarkMarkURL
106680
+ * * Display Name: Dark Mode Logo
106681
+ * * SQL Data Type: nvarchar(1000)
106682
+ * * Description: Public URL of the logo mark for dark surfaces. Dark mode swaps to this artwork rather than transforming the light mark.
106683
+ */
106684
+ get DarkMarkURL() {
106685
+ return this.Get('DarkMarkURL');
106686
+ }
106687
+ set DarkMarkURL(value) {
106688
+ this.Set('DarkMarkURL', value);
106689
+ }
106690
+ /**
106691
+ * * Field Name: WordmarkURL
106692
+ * * Display Name: Wordmark Logo
106693
+ * * SQL Data Type: nvarchar(1000)
106694
+ * * Description: Optional public URL of the full wordmark logo.
106695
+ */
106696
+ get WordmarkURL() {
106697
+ return this.Get('WordmarkURL');
106698
+ }
106699
+ set WordmarkURL(value) {
106700
+ this.Set('WordmarkURL', value);
106701
+ }
106702
+ /**
106703
+ * * Field Name: MonochromeURL
106704
+ * * Display Name: Monochrome Logo
106705
+ * * SQL Data Type: nvarchar(1000)
106706
+ * * Description: Optional public URL of a single-fill monochrome logo variant.
106707
+ */
106708
+ get MonochromeURL() {
106709
+ return this.Get('MonochromeURL');
106710
+ }
106711
+ set MonochromeURL(value) {
106712
+ this.Set('MonochromeURL', value);
106713
+ }
106714
+ /**
106715
+ * * Field Name: IsDefault
106716
+ * * Display Name: Is Default Theme
106717
+ * * SQL Data Type: bit
106718
+ * * Default Value: 0
106719
+ * * Description: When 1, this is the default theme applied when no other is selected. Single-default enforcement is handled at the application layer.
106720
+ */
106721
+ get IsDefault() {
106722
+ return this.Get('IsDefault');
106723
+ }
106724
+ set IsDefault(value) {
106725
+ this.Set('IsDefault', value);
106726
+ }
106727
+ /**
106728
+ * * Field Name: Status
106729
+ * * Display Name: Status
106730
+ * * SQL Data Type: nvarchar(20)
106731
+ * * Default Value: Active
106732
+ * * Value List Type: List
106733
+ * * Possible Values
106734
+ * * Active
106735
+ * * Draft
106736
+ * * Inactive
106737
+ * * Description: Lifecycle status: Active (available), Inactive (retired), or Draft (in progress, not applied).
106738
+ */
106739
+ get Status() {
106740
+ return this.Get('Status');
106741
+ }
106742
+ set Status(value) {
106743
+ this.Set('Status', value);
106744
+ }
106745
+ /**
106746
+ * * Field Name: Overrides
106747
+ * * Display Name: Token Overrides
106748
+ * * SQL Data Type: nvarchar(MAX)
106749
+ * * Description: Optional advanced token overrides as a JSON object mapping a --mj-* CSS custom property name to a value (e.g. {"--mj-brand-primary-hover":"#0a5cff"}). Applied on top of the seed-derived token contract at load, before CustomCSS. Leave null to use the pure derived theme.
106750
+ */
106751
+ get Overrides() {
106752
+ return this.Get('Overrides');
106753
+ }
106754
+ set Overrides(value) {
106755
+ this.Set('Overrides', value);
106756
+ }
106757
+ /**
106758
+ * * Field Name: CustomCSS
106759
+ * * Display Name: Custom CSS
106760
+ * * SQL Data Type: nvarchar(MAX)
106761
+ * * Description: Optional advanced raw CSS appended to the theme overlay and auto-scoped under [data-theme-overlay="<id>"]. Applied last, after the derived tokens and Overrides. Escape hatch for rules the seed/token model cannot express; leave null for none.
106762
+ */
106763
+ get CustomCSS() {
106764
+ return this.Get('CustomCSS');
106765
+ }
106766
+ set CustomCSS(value) {
106767
+ this.Set('CustomCSS', value);
106768
+ }
106769
+ /**
106770
+ * * Field Name: __mj_CreatedAt
106771
+ * * Display Name: Created At
106772
+ * * SQL Data Type: datetimeoffset
106773
+ * * Default Value: getutcdate()
106774
+ */
106775
+ get __mj_CreatedAt() {
106776
+ return this.Get('__mj_CreatedAt');
106777
+ }
106778
+ /**
106779
+ * * Field Name: __mj_UpdatedAt
106780
+ * * Display Name: Updated At
106781
+ * * SQL Data Type: datetimeoffset
106782
+ * * Default Value: getutcdate()
106783
+ */
106784
+ get __mj_UpdatedAt() {
106785
+ return this.Get('__mj_UpdatedAt');
106786
+ }
106787
+ };
106788
+ MJThemeEntity = __decorate([
106789
+ RegisterClass(BaseEntity, 'MJ: Themes')
106790
+ ], MJThemeEntity);
106791
+ export { MJThemeEntity };
104945
106792
  /**
104946
106793
  * MJ: User Application Entities - strongly typed entity sub-class
104947
106794
  * * Schema: __mj