@memberjunction/core-entities 5.41.0 → 5.42.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.
@@ -2051,7 +2051,7 @@ export const MJAIAgentNoteSchema = z.object({
2051
2051
  * * SQL Data Type: nvarchar(255)`),
2052
2052
  SourceConversationDetail: z.string().nullable().describe(`
2053
2053
  * * Field Name: SourceConversationDetail
2054
- * * Display Name: Source Conversation Detail
2054
+ * * Display Name: Source Conversation Detail Name
2055
2055
  * * SQL Data Type: nvarchar(100)`),
2056
2056
  SourceAIAgentRun: z.string().nullable().describe(`
2057
2057
  * * Field Name: SourceAIAgentRun
@@ -17721,7 +17721,7 @@ export const MJIntegrationObjectSchema = z.object({
17721
17721
  * * Description: Primary key`),
17722
17722
  IntegrationID: z.string().describe(`
17723
17723
  * * Field Name: IntegrationID
17724
- * * Display Name: Integration
17724
+ * * Display Name: Integration ID
17725
17725
  * * SQL Data Type: uniqueidentifier
17726
17726
  * * Related Entity/Foreign Key: MJ: Integrations (vwIntegrations.ID)
17727
17727
  * * Description: Foreign key to the Integration that owns this object`),
@@ -17955,9 +17955,43 @@ export const MJIntegrationObjectSchema = z.object({
17955
17955
  * * Declared
17956
17956
  * * Discovered
17957
17957
  * * Description: Provenance of this IntegrationObject row: Declared (from static research/docs), Discovered (from runtime API introspection like Salesforce /describe), Custom (genuinely customer-created, e.g., HubSpot custom objects). Drives merge precedence in IntegrationSchemaSync.`),
17958
+ SupportsCreate: z.boolean().describe(`
17959
+ * * Field Name: SupportsCreate
17960
+ * * Display Name: Supports Create
17961
+ * * SQL Data Type: bit
17962
+ * * Default Value: 0
17963
+ * * Description: Whether this object supports record creation in the external system (per-operation granularity beyond SupportsWrite). Drives whether the generic CreateRecord path is wired and whether the object is offered for write-back create.`),
17964
+ SupportsUpdate: z.boolean().describe(`
17965
+ * * Field Name: SupportsUpdate
17966
+ * * Display Name: Supports Update
17967
+ * * SQL Data Type: bit
17968
+ * * Default Value: 0
17969
+ * * Description: Whether this object supports record updates in the external system (per-operation granularity beyond SupportsWrite).`),
17970
+ SupportsDelete: z.boolean().describe(`
17971
+ * * Field Name: SupportsDelete
17972
+ * * Display Name: Supports Delete
17973
+ * * SQL Data Type: bit
17974
+ * * Default Value: 0
17975
+ * * Description: Whether this object supports record deletion/tombstoning in the external system (per-operation granularity beyond SupportsWrite).`),
17976
+ SyncStrategy: z.string().nullable().describe(`
17977
+ * * Field Name: SyncStrategy
17978
+ * * Display Name: Sync Strategy
17979
+ * * SQL Data Type: nvarchar(50)
17980
+ * * Description: Declared incremental sync strategy for this object (e.g. WatermarkIncremental, ContentHash, FullSnapshot). Informs how the engine narrows subsequent syncs.`),
17981
+ ContentHashApplicable: z.boolean().describe(`
17982
+ * * Field Name: ContentHashApplicable
17983
+ * * Display Name: Content Hash Applicable
17984
+ * * SQL Data Type: bit
17985
+ * * Default Value: 1
17986
+ * * Description: Whether per-record content hashing is meaningful for this object (false for append-only/event streams where every row is new). Controls whether the engine uses content-hash to skip unchanged-row writes.`),
17987
+ StableOrderingKey: z.string().nullable().describe(`
17988
+ * * Field Name: StableOrderingKey
17989
+ * * Display Name: Stable Ordering Key
17990
+ * * SQL Data Type: nvarchar(255)
17991
+ * * Description: Stable, monotonic ordering column (usually the PK) used for keyset/no-watermark resume of a scan. Null when the object has no stable key.`),
17958
17992
  Integration: z.string().describe(`
17959
17993
  * * Field Name: Integration
17960
- * * Display Name: Integration Name
17994
+ * * Display Name: Integration
17961
17995
  * * SQL Data Type: nvarchar(100)`),
17962
17996
  });
17963
17997
  /**
@@ -18125,6 +18159,11 @@ export const MJIntegrationSchema = z.object({
18125
18159
  * * Display Name: Icon
18126
18160
  * * SQL Data Type: nvarchar(MAX)
18127
18161
  * * Description: Icon for the integration. Supports Font Awesome CSS classes, image URLs, or base64 data URIs.`),
18162
+ Configuration: z.string().nullable().describe(`
18163
+ * * Field Name: Configuration
18164
+ * * Display Name: Configuration
18165
+ * * SQL Data Type: nvarchar(MAX)
18166
+ * * Description: Integration-level connector configuration JSON (e.g. out-of-scope object families, vendor-specific tuning). Free-form JSON the connector reads at runtime.`),
18128
18167
  CredentialType: z.string().nullable().describe(`
18129
18168
  * * Field Name: CredentialType
18130
18169
  * * Display Name: Credential Type Name
@@ -20386,6 +20425,288 @@ export const MJPermissionDomainSchema = z.object({
20386
20425
  * * SQL Data Type: datetimeoffset
20387
20426
  * * Default Value: getutcdate()`),
20388
20427
  });
20428
+ /**
20429
+ * zod schema definition for the entity MJ: Process Run Details
20430
+ */
20431
+ export const MJProcessRunDetailSchema = z.object({
20432
+ ID: z.string().describe(`
20433
+ * * Field Name: ID
20434
+ * * Display Name: ID
20435
+ * * SQL Data Type: uniqueidentifier
20436
+ * * Default Value: newsequentialid()`),
20437
+ ProcessRunID: z.string().describe(`
20438
+ * * Field Name: ProcessRunID
20439
+ * * Display Name: Process Run
20440
+ * * SQL Data Type: uniqueidentifier
20441
+ * * Related Entity/Foreign Key: MJ: Process Runs (vwProcessRuns.ID)
20442
+ * * Description: Foreign key to the parent Process Run`),
20443
+ EntityID: z.string().describe(`
20444
+ * * Field Name: EntityID
20445
+ * * Display Name: Entity ID
20446
+ * * SQL Data Type: uniqueidentifier
20447
+ * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)
20448
+ * * Description: Foreign key to the entity of the processed record. Stored (not inherited) because a single run may span entities for ad-hoc / engine-driven runs.`),
20449
+ RecordID: z.string().describe(`
20450
+ * * Field Name: RecordID
20451
+ * * Display Name: Record ID
20452
+ * * SQL Data Type: nvarchar(450)
20453
+ * * Description: Primary key of the processed record, stored as text to remain composite-key safe`),
20454
+ Status: z.union([z.literal('Failed'), z.literal('Pending'), z.literal('Skipped'), z.literal('Succeeded')]).describe(`
20455
+ * * Field Name: Status
20456
+ * * Display Name: Status
20457
+ * * SQL Data Type: nvarchar(20)
20458
+ * * Default Value: Pending
20459
+ * * Value List Type: List
20460
+ * * Possible Values
20461
+ * * Failed
20462
+ * * Pending
20463
+ * * Skipped
20464
+ * * Succeeded
20465
+ * * Description: Per-record status: Pending, Succeeded, Failed, or Skipped`),
20466
+ StartedAt: z.date().nullable().describe(`
20467
+ * * Field Name: StartedAt
20468
+ * * Display Name: Started At
20469
+ * * SQL Data Type: datetimeoffset
20470
+ * * Description: When processing of this record started`),
20471
+ CompletedAt: z.date().nullable().describe(`
20472
+ * * Field Name: CompletedAt
20473
+ * * Display Name: Completed At
20474
+ * * SQL Data Type: datetimeoffset
20475
+ * * Description: When processing of this record completed`),
20476
+ DurationMs: z.number().nullable().describe(`
20477
+ * * Field Name: DurationMs
20478
+ * * Display Name: Duration (ms)
20479
+ * * SQL Data Type: int
20480
+ * * Description: Processing duration for this record in milliseconds`),
20481
+ AttemptCount: z.number().describe(`
20482
+ * * Field Name: AttemptCount
20483
+ * * Display Name: Attempt Count
20484
+ * * SQL Data Type: int
20485
+ * * Default Value: 0
20486
+ * * Description: Number of processing attempts for this record (supports retry)`),
20487
+ ResultPayload: z.string().nullable().describe(`
20488
+ * * Field Name: ResultPayload
20489
+ * * Display Name: Result Payload
20490
+ * * SQL Data Type: nvarchar(MAX)
20491
+ * * Description: Structured output payload (JSON) produced for this record`),
20492
+ ErrorMessage: z.string().nullable().describe(`
20493
+ * * Field Name: ErrorMessage
20494
+ * * Display Name: Error Message
20495
+ * * SQL Data Type: nvarchar(MAX)
20496
+ * * Description: Per-record error message when Status=Failed`),
20497
+ ActionExecutionLogID: z.string().nullable().describe(`
20498
+ * * Field Name: ActionExecutionLogID
20499
+ * * Display Name: Action Execution Log ID
20500
+ * * SQL Data Type: uniqueidentifier
20501
+ * * Related Entity/Foreign Key: MJ: Action Execution Logs (vwActionExecutionLogs.ID)
20502
+ * * Description: Foreign key to the Action Execution Log for deep tracing, when the work was an Action`),
20503
+ AIAgentRunID: z.string().nullable().describe(`
20504
+ * * Field Name: AIAgentRunID
20505
+ * * Display Name: AI Agent Run ID
20506
+ * * SQL Data Type: uniqueidentifier
20507
+ * * Related Entity/Foreign Key: MJ: AI Agent Runs (vwAIAgentRuns.ID)
20508
+ * * Description: Foreign key to the AI Agent Run for deep tracing, when the work was an Agent`),
20509
+ __mj_CreatedAt: z.date().describe(`
20510
+ * * Field Name: __mj_CreatedAt
20511
+ * * Display Name: Created At
20512
+ * * SQL Data Type: datetimeoffset
20513
+ * * Default Value: getutcdate()`),
20514
+ __mj_UpdatedAt: z.date().describe(`
20515
+ * * Field Name: __mj_UpdatedAt
20516
+ * * Display Name: Updated At
20517
+ * * SQL Data Type: datetimeoffset
20518
+ * * Default Value: getutcdate()`),
20519
+ Entity: z.string().describe(`
20520
+ * * Field Name: Entity
20521
+ * * Display Name: Entity Name
20522
+ * * SQL Data Type: nvarchar(255)`),
20523
+ ActionExecutionLog: z.string().nullable().describe(`
20524
+ * * Field Name: ActionExecutionLog
20525
+ * * Display Name: Action Execution Log
20526
+ * * SQL Data Type: nvarchar(425)`),
20527
+ AIAgentRun: z.string().nullable().describe(`
20528
+ * * Field Name: AIAgentRun
20529
+ * * Display Name: AI Agent Run
20530
+ * * SQL Data Type: nvarchar(255)`),
20531
+ });
20532
+ /**
20533
+ * zod schema definition for the entity MJ: Process Runs
20534
+ */
20535
+ export const MJProcessRunSchema = z.object({
20536
+ ID: z.string().describe(`
20537
+ * * Field Name: ID
20538
+ * * Display Name: ID
20539
+ * * SQL Data Type: uniqueidentifier
20540
+ * * Default Value: newsequentialid()`),
20541
+ RecordProcessID: z.string().nullable().describe(`
20542
+ * * Field Name: RecordProcessID
20543
+ * * Display Name: Record Process
20544
+ * * SQL Data Type: uniqueidentifier
20545
+ * * Related Entity/Foreign Key: MJ: Record Processes (vwRecordProcesses.ID)
20546
+ * * Description: Foreign key to the Record Process that spawned this run; NULL for ad-hoc / engine-driven runs not tied to a saved definition`),
20547
+ EntityID: z.string().nullable().describe(`
20548
+ * * Field Name: EntityID
20549
+ * * Display Name: Entity
20550
+ * * SQL Data Type: uniqueidentifier
20551
+ * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)
20552
+ * * Description: Foreign key to the entity processed by this run, when the run is entity-scoped`),
20553
+ TriggeredBy: z.union([z.literal('Manual'), z.literal('OnChange'), z.literal('OnDemand'), z.literal('Schedule')]).describe(`
20554
+ * * Field Name: TriggeredBy
20555
+ * * Display Name: Triggered By
20556
+ * * SQL Data Type: nvarchar(20)
20557
+ * * Value List Type: List
20558
+ * * Possible Values
20559
+ * * Manual
20560
+ * * OnChange
20561
+ * * OnDemand
20562
+ * * Schedule
20563
+ * * Description: What triggered this run: OnChange, Schedule, OnDemand, or Manual`),
20564
+ SourceType: z.union([z.literal('Array'), z.literal('Filter'), z.literal('Keyset'), z.literal('List'), z.literal('SingleRecord'), z.literal('View')]).describe(`
20565
+ * * Field Name: SourceType
20566
+ * * Display Name: Source Type
20567
+ * * SQL Data Type: nvarchar(20)
20568
+ * * Value List Type: List
20569
+ * * Possible Values
20570
+ * * Array
20571
+ * * Filter
20572
+ * * Keyset
20573
+ * * List
20574
+ * * SingleRecord
20575
+ * * View
20576
+ * * Description: The kind of record-set source resolved for this run: View, List, Filter, Array, Keyset, or SingleRecord`),
20577
+ SourceID: z.string().nullable().describe(`
20578
+ * * Field Name: SourceID
20579
+ * * Display Name: Source ID
20580
+ * * SQL Data Type: uniqueidentifier
20581
+ * * Description: Polymorphic source identifier (e.g., ViewID or ListID) when applicable; no FK because it spans entities`),
20582
+ SourceFilter: z.string().nullable().describe(`
20583
+ * * Field Name: SourceFilter
20584
+ * * Display Name: Source Filter
20585
+ * * SQL Data Type: nvarchar(MAX)
20586
+ * * Description: Resolved filter snapshot used to materialize the record set for this run`),
20587
+ ScheduledJobRunID: z.string().nullable().describe(`
20588
+ * * Field Name: ScheduledJobRunID
20589
+ * * Display Name: Scheduled Job Run
20590
+ * * SQL Data Type: uniqueidentifier
20591
+ * * Related Entity/Foreign Key: MJ: Scheduled Job Runs (vwScheduledJobRuns.ID)
20592
+ * * Description: Foreign key to the Scheduled Job Run that launched this run, when scheduler-launched`),
20593
+ Status: z.union([z.literal('Cancelled'), z.literal('Completed'), z.literal('Failed'), z.literal('Paused'), z.literal('Pending'), z.literal('Running')]).describe(`
20594
+ * * Field Name: Status
20595
+ * * Display Name: Status
20596
+ * * SQL Data Type: nvarchar(20)
20597
+ * * Default Value: Pending
20598
+ * * Value List Type: List
20599
+ * * Possible Values
20600
+ * * Cancelled
20601
+ * * Completed
20602
+ * * Failed
20603
+ * * Paused
20604
+ * * Pending
20605
+ * * Running
20606
+ * * Description: Run status: Pending, Running, Paused, Completed, Failed, or Cancelled`),
20607
+ StartTime: z.date().nullable().describe(`
20608
+ * * Field Name: StartTime
20609
+ * * Display Name: Start Time
20610
+ * * SQL Data Type: datetimeoffset
20611
+ * * Description: When the run started`),
20612
+ EndTime: z.date().nullable().describe(`
20613
+ * * Field Name: EndTime
20614
+ * * Display Name: End Time
20615
+ * * SQL Data Type: datetimeoffset
20616
+ * * Description: When the run ended`),
20617
+ TotalItemCount: z.number().nullable().describe(`
20618
+ * * Field Name: TotalItemCount
20619
+ * * Display Name: Total Item Count
20620
+ * * SQL Data Type: int
20621
+ * * Description: Estimated or known total number of records to process`),
20622
+ ProcessedItems: z.number().describe(`
20623
+ * * Field Name: ProcessedItems
20624
+ * * Display Name: Processed Items
20625
+ * * SQL Data Type: int
20626
+ * * Default Value: 0
20627
+ * * Description: Count of records processed so far`),
20628
+ SuccessCount: z.number().describe(`
20629
+ * * Field Name: SuccessCount
20630
+ * * Display Name: Success Count
20631
+ * * SQL Data Type: int
20632
+ * * Default Value: 0
20633
+ * * Description: Count of records processed successfully`),
20634
+ ErrorCount: z.number().describe(`
20635
+ * * Field Name: ErrorCount
20636
+ * * Display Name: Error Count
20637
+ * * SQL Data Type: int
20638
+ * * Default Value: 0
20639
+ * * Description: Count of records that failed processing`),
20640
+ SkippedCount: z.number().describe(`
20641
+ * * Field Name: SkippedCount
20642
+ * * Display Name: Skipped Count
20643
+ * * SQL Data Type: int
20644
+ * * Default Value: 0
20645
+ * * Description: Count of records skipped (e.g., unchanged per watermark)`),
20646
+ LastProcessedOffset: z.number().nullable().describe(`
20647
+ * * Field Name: LastProcessedOffset
20648
+ * * Display Name: Last Processed Offset
20649
+ * * SQL Data Type: int
20650
+ * * Description: Offset-based resume cursor (StartRow) for sources that paginate by offset`),
20651
+ LastProcessedKey: z.string().nullable().describe(`
20652
+ * * Field Name: LastProcessedKey
20653
+ * * Display Name: Last Processed Key
20654
+ * * SQL Data Type: nvarchar(450)
20655
+ * * Description: Keyset-based resume cursor (AfterKey) for sources that paginate by seek`),
20656
+ BatchSize: z.number().nullable().describe(`
20657
+ * * Field Name: BatchSize
20658
+ * * Display Name: Batch Size
20659
+ * * SQL Data Type: int
20660
+ * * Description: Effective batch size for this run`),
20661
+ CancellationRequested: z.boolean().describe(`
20662
+ * * Field Name: CancellationRequested
20663
+ * * Display Name: Cancellation Requested
20664
+ * * SQL Data Type: bit
20665
+ * * Default Value: 0
20666
+ * * Description: Pause/cancel handshake flag honored by the processor between batches`),
20667
+ Configuration: z.string().nullable().describe(`
20668
+ * * Field Name: Configuration
20669
+ * * Display Name: Configuration
20670
+ * * SQL Data Type: nvarchar(MAX)
20671
+ * * Description: JSON snapshot of the effective configuration for this run`),
20672
+ ErrorMessage: z.string().nullable().describe(`
20673
+ * * Field Name: ErrorMessage
20674
+ * * Display Name: Error Message
20675
+ * * SQL Data Type: nvarchar(MAX)
20676
+ * * Description: Run-level error message when Status=Failed`),
20677
+ StartedByUserID: z.string().nullable().describe(`
20678
+ * * Field Name: StartedByUserID
20679
+ * * Display Name: Started By User
20680
+ * * SQL Data Type: uniqueidentifier
20681
+ * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)
20682
+ * * Description: Foreign key to the user who started the run`),
20683
+ __mj_CreatedAt: z.date().describe(`
20684
+ * * Field Name: __mj_CreatedAt
20685
+ * * Display Name: Created At
20686
+ * * SQL Data Type: datetimeoffset
20687
+ * * Default Value: getutcdate()`),
20688
+ __mj_UpdatedAt: z.date().describe(`
20689
+ * * Field Name: __mj_UpdatedAt
20690
+ * * Display Name: Updated At
20691
+ * * SQL Data Type: datetimeoffset
20692
+ * * Default Value: getutcdate()`),
20693
+ RecordProcess: z.string().nullable().describe(`
20694
+ * * Field Name: RecordProcess
20695
+ * * Display Name: Record Process Name
20696
+ * * SQL Data Type: nvarchar(255)`),
20697
+ Entity: z.string().nullable().describe(`
20698
+ * * Field Name: Entity
20699
+ * * Display Name: Entity Name
20700
+ * * SQL Data Type: nvarchar(255)`),
20701
+ ScheduledJobRun: z.string().nullable().describe(`
20702
+ * * Field Name: ScheduledJobRun
20703
+ * * Display Name: Scheduled Job Run Name
20704
+ * * SQL Data Type: nvarchar(200)`),
20705
+ StartedByUser: z.string().nullable().describe(`
20706
+ * * Field Name: StartedByUser
20707
+ * * Display Name: Started By User Name
20708
+ * * SQL Data Type: nvarchar(100)`),
20709
+ });
20389
20710
  /**
20390
20711
  * zod schema definition for the entity MJ: Projects
20391
20712
  */
@@ -22081,9 +22402,9 @@ export const MJRecordMergeLogSchema = z.object({
22081
22402
  * * SQL Data Type: nvarchar(100)`),
22082
22403
  });
22083
22404
  /**
22084
- * zod schema definition for the entity MJ: Report Categories
22405
+ * zod schema definition for the entity MJ: Record Process Categories
22085
22406
  */
22086
- export const MJReportCategorySchema = z.object({
22407
+ export const MJRecordProcessCategorySchema = z.object({
22087
22408
  ID: z.string().describe(`
22088
22409
  * * Field Name: ID
22089
22410
  * * Display Name: ID
@@ -22092,21 +22413,19 @@ export const MJReportCategorySchema = z.object({
22092
22413
  Name: z.string().describe(`
22093
22414
  * * Field Name: Name
22094
22415
  * * Display Name: Name
22095
- * * SQL Data Type: nvarchar(100)`),
22416
+ * * SQL Data Type: nvarchar(255)
22417
+ * * Description: Display name of the category`),
22096
22418
  Description: z.string().nullable().describe(`
22097
22419
  * * Field Name: Description
22098
22420
  * * Display Name: Description
22099
- * * SQL Data Type: nvarchar(MAX)`),
22421
+ * * SQL Data Type: nvarchar(MAX)
22422
+ * * Description: Optional description of what belongs in this category`),
22100
22423
  ParentID: z.string().nullable().describe(`
22101
22424
  * * Field Name: ParentID
22102
- * * Display Name: Parent ID
22103
- * * SQL Data Type: uniqueidentifier
22104
- * * Related Entity/Foreign Key: MJ: Report Categories (vwReportCategories.ID)`),
22105
- UserID: z.string().describe(`
22106
- * * Field Name: UserID
22107
- * * Display Name: User ID
22425
+ * * Display Name: Parent Category
22108
22426
  * * SQL Data Type: uniqueidentifier
22109
- * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)`),
22427
+ * * Related Entity/Foreign Key: MJ: Record Process Categories (vwRecordProcessCategories.ID)
22428
+ * * Description: Self-referencing foreign key to the parent category, enabling a nested folder hierarchy (NULL for a top-level category)`),
22110
22429
  __mj_CreatedAt: z.date().describe(`
22111
22430
  * * Field Name: __mj_CreatedAt
22112
22431
  * * Display Name: Created At
@@ -22119,41 +22438,49 @@ export const MJReportCategorySchema = z.object({
22119
22438
  * * Default Value: getutcdate()`),
22120
22439
  Parent: z.string().nullable().describe(`
22121
22440
  * * Field Name: Parent
22122
- * * Display Name: Parent
22123
- * * SQL Data Type: nvarchar(100)`),
22124
- User: z.string().describe(`
22125
- * * Field Name: User
22126
- * * Display Name: User
22127
- * * SQL Data Type: nvarchar(100)`),
22441
+ * * Display Name: Parent Name
22442
+ * * SQL Data Type: nvarchar(255)`),
22128
22443
  RootParentID: z.string().nullable().describe(`
22129
22444
  * * Field Name: RootParentID
22130
- * * Display Name: Root Parent ID
22445
+ * * Display Name: Root Parent
22131
22446
  * * SQL Data Type: uniqueidentifier`),
22132
22447
  });
22133
22448
  /**
22134
- * zod schema definition for the entity MJ: Report Snapshots
22449
+ * zod schema definition for the entity MJ: Record Process Watermarks
22135
22450
  */
22136
- export const MJReportSnapshotSchema = z.object({
22451
+ export const MJRecordProcessWatermarkSchema = z.object({
22137
22452
  ID: z.string().describe(`
22138
22453
  * * Field Name: ID
22139
22454
  * * Display Name: ID
22140
22455
  * * SQL Data Type: uniqueidentifier
22141
22456
  * * Default Value: newsequentialid()`),
22142
- ReportID: z.string().describe(`
22143
- * * Field Name: ReportID
22144
- * * Display Name: Report ID
22457
+ RecordProcessID: z.string().describe(`
22458
+ * * Field Name: RecordProcessID
22459
+ * * Display Name: Record Process
22145
22460
  * * SQL Data Type: uniqueidentifier
22146
- * * Related Entity/Foreign Key: MJ: Reports (vwReports.ID)`),
22147
- ResultSet: z.string().describe(`
22148
- * * Field Name: ResultSet
22149
- * * Display Name: Result Set
22150
- * * SQL Data Type: nvarchar(MAX)
22151
- * * Description: Field ResultSet for entity Report Snapshots.`),
22152
- UserID: z.string().describe(`
22153
- * * Field Name: UserID
22154
- * * Display Name: User ID
22461
+ * * Related Entity/Foreign Key: MJ: Record Processes (vwRecordProcesses.ID)
22462
+ * * Description: Foreign key to the Record Process this watermark belongs to`),
22463
+ EntityID: z.string().describe(`
22464
+ * * Field Name: EntityID
22465
+ * * Display Name: Entity
22155
22466
  * * SQL Data Type: uniqueidentifier
22156
- * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)`),
22467
+ * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)
22468
+ * * Description: Foreign key to the entity of the watermarked record`),
22469
+ RecordID: z.string().describe(`
22470
+ * * Field Name: RecordID
22471
+ * * Display Name: Record ID
22472
+ * * SQL Data Type: nvarchar(450)
22473
+ * * Description: Primary key of the watermarked record, stored as text to remain composite-key safe`),
22474
+ Hash: z.string().describe(`
22475
+ * * Field Name: Hash
22476
+ * * Display Name: Content Hash
22477
+ * * SQL Data Type: nvarchar(128)
22478
+ * * Description: Content hash of the record as of the last time it was processed by this Record Process`),
22479
+ LastProcessedAt: z.date().describe(`
22480
+ * * Field Name: LastProcessedAt
22481
+ * * Display Name: Last Processed At
22482
+ * * SQL Data Type: datetimeoffset
22483
+ * * Description: When this record was last processed by this Record Process`),
22157
22484
  __mj_CreatedAt: z.date().describe(`
22158
22485
  * * Field Name: __mj_CreatedAt
22159
22486
  * * Display Name: Created At
@@ -22164,39 +22491,196 @@ export const MJReportSnapshotSchema = z.object({
22164
22491
  * * Display Name: Updated At
22165
22492
  * * SQL Data Type: datetimeoffset
22166
22493
  * * Default Value: getutcdate()`),
22167
- Report: z.string().describe(`
22168
- * * Field Name: Report
22169
- * * Display Name: Report
22494
+ RecordProcess: z.string().describe(`
22495
+ * * Field Name: RecordProcess
22496
+ * * Display Name: Record Process Name
22497
+ * * SQL Data Type: nvarchar(255)`),
22498
+ Entity: z.string().describe(`
22499
+ * * Field Name: Entity
22500
+ * * Display Name: Entity Name
22170
22501
  * * SQL Data Type: nvarchar(255)`),
22171
- User: z.string().describe(`
22172
- * * Field Name: User
22173
- * * Display Name: User
22174
- * * SQL Data Type: nvarchar(100)`),
22175
22502
  });
22176
22503
  /**
22177
- * zod schema definition for the entity MJ: Report User States
22504
+ * zod schema definition for the entity MJ: Record Processes
22178
22505
  */
22179
- export const MJReportUserStateSchema = z.object({
22506
+ export const MJRecordProcessSchema = z.object({
22180
22507
  ID: z.string().describe(`
22181
22508
  * * Field Name: ID
22182
22509
  * * Display Name: ID
22183
22510
  * * SQL Data Type: uniqueidentifier
22184
22511
  * * Default Value: newsequentialid()`),
22185
- ReportID: z.string().describe(`
22186
- * * Field Name: ReportID
22187
- * * Display Name: Report ID
22512
+ Name: z.string().describe(`
22513
+ * * Field Name: Name
22514
+ * * Display Name: Name
22515
+ * * SQL Data Type: nvarchar(255)
22516
+ * * Description: Human-readable name of the process definition (e.g., "Weekly Customer Health Summary")`),
22517
+ Description: z.string().nullable().describe(`
22518
+ * * Field Name: Description
22519
+ * * Display Name: Description
22520
+ * * SQL Data Type: nvarchar(MAX)
22521
+ * * Description: Optional description of what this process does`),
22522
+ CategoryID: z.string().nullable().describe(`
22523
+ * * Field Name: CategoryID
22524
+ * * Display Name: Category
22188
22525
  * * SQL Data Type: uniqueidentifier
22189
- * * Related Entity/Foreign Key: MJ: Reports (vwReports.ID)`),
22190
- UserID: z.string().describe(`
22191
- * * Field Name: UserID
22192
- * * Display Name: User ID
22526
+ * * Related Entity/Foreign Key: MJ: Record Process Categories (vwRecordProcessCategories.ID)
22527
+ * * Description: Optional hierarchical category for organizing this process in the UI`),
22528
+ EntityID: z.string().describe(`
22529
+ * * Field Name: EntityID
22530
+ * * Display Name: Entity
22193
22531
  * * SQL Data Type: uniqueidentifier
22194
- * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)`),
22195
- ReportState: z.string().nullable().describe(`
22196
- * * Field Name: ReportState
22197
- * * Display Name: Report State
22532
+ * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)
22533
+ * * Description: Foreign key to the target entity whose records this process operates on`),
22534
+ Status: z.union([z.literal('Active'), z.literal('Disabled'), z.literal('Draft')]).describe(`
22535
+ * * Field Name: Status
22536
+ * * Display Name: Status
22537
+ * * SQL Data Type: nvarchar(20)
22538
+ * * Default Value: Draft
22539
+ * * Value List Type: List
22540
+ * * Possible Values
22541
+ * * Active
22542
+ * * Disabled
22543
+ * * Draft
22544
+ * * Description: Lifecycle status: Draft (not yet wired), Active (triggers live), or Disabled`),
22545
+ WorkType: z.union([z.literal('Action'), z.literal('Agent'), z.literal('Infer')]).describe(`
22546
+ * * Field Name: WorkType
22547
+ * * Display Name: Work Type
22548
+ * * SQL Data Type: nvarchar(20)
22549
+ * * Value List Type: List
22550
+ * * Possible Values
22551
+ * * Action
22552
+ * * Agent
22553
+ * * Infer
22554
+ * * Description: Whether the work is an Action, an Agent, or an Infer (per-record AI Prompt). Agents are dispatched through the Execute Agent action and must be top-level + ExposeAsAction; Infer runs the AI Prompt named by PromptID for each record and writes its structured output back via OutputMapping.`),
22555
+ ActionID: z.string().nullable().describe(`
22556
+ * * Field Name: ActionID
22557
+ * * Display Name: Action
22558
+ * * SQL Data Type: uniqueidentifier
22559
+ * * Related Entity/Foreign Key: MJ: Actions (vwActions.ID)
22560
+ * * Description: Foreign key to the Action to run, when WorkType=Action`),
22561
+ AgentID: z.string().nullable().describe(`
22562
+ * * Field Name: AgentID
22563
+ * * Display Name: Agent
22564
+ * * SQL Data Type: uniqueidentifier
22565
+ * * Related Entity/Foreign Key: MJ: AI Agents (vwAIAgents.ID)
22566
+ * * Description: Foreign key to the AI Agent to run, when WorkType=Agent`),
22567
+ PromptID: z.string().nullable().describe(`
22568
+ * * Field Name: PromptID
22569
+ * * Display Name: Prompt
22570
+ * * SQL Data Type: uniqueidentifier
22571
+ * * Related Entity/Foreign Key: MJ: AI Prompts (vwAIPrompts.ID)
22572
+ * * Description: Foreign key to the AI Prompt to run for each record, when WorkType=Infer. The prompt's structured output is written back to the data model via OutputMapping.`),
22573
+ ScopeType: z.union([z.literal('Filter'), z.literal('List'), z.literal('SingleRecord'), z.literal('View')]).describe(`
22574
+ * * Field Name: ScopeType
22575
+ * * Display Name: Scope Type
22576
+ * * SQL Data Type: nvarchar(20)
22577
+ * * Value List Type: List
22578
+ * * Possible Values
22579
+ * * Filter
22580
+ * * List
22581
+ * * SingleRecord
22582
+ * * View
22583
+ * * Description: How the record set is scoped for the Schedule and On-Demand triggers: SingleRecord, View, List, or Filter. The On-Change trigger is always single-record and ignores this.`),
22584
+ ScopeViewID: z.string().nullable().describe(`
22585
+ * * Field Name: ScopeViewID
22586
+ * * Display Name: Scope View
22587
+ * * SQL Data Type: uniqueidentifier
22588
+ * * Related Entity/Foreign Key: MJ: User Views (vwUserViews.ID)
22589
+ * * Description: Foreign key to the User View defining the scope, when ScopeType=View`),
22590
+ ScopeListID: z.string().nullable().describe(`
22591
+ * * Field Name: ScopeListID
22592
+ * * Display Name: Scope List
22593
+ * * SQL Data Type: uniqueidentifier
22594
+ * * Related Entity/Foreign Key: MJ: Lists (vwLists.ID)
22595
+ * * Description: Foreign key to the List defining the scope, when ScopeType=List`),
22596
+ ScopeFilter: z.string().nullable().describe(`
22597
+ * * Field Name: ScopeFilter
22598
+ * * Display Name: Scope Filter
22198
22599
  * * SQL Data Type: nvarchar(MAX)
22199
- * * Description: JSON serialized state of user interaction with the report`),
22600
+ * * Description: Ad-hoc WHERE clause used to resolve the record set, when ScopeType=Filter`),
22601
+ OnChangeEnabled: z.boolean().describe(`
22602
+ * * Field Name: OnChangeEnabled
22603
+ * * Display Name: On-Change Enabled
22604
+ * * SQL Data Type: bit
22605
+ * * Default Value: 0
22606
+ * * Description: When 1, the process runs per-record on save via an owned Entity Action`),
22607
+ OnChangeInvocationType: z.union([z.literal('AfterCreate'), z.literal('AfterDelete'), z.literal('AfterUpdate'), z.literal('Validate')]).nullable().describe(`
22608
+ * * Field Name: OnChangeInvocationType
22609
+ * * Display Name: On-Change Invocation Type
22610
+ * * SQL Data Type: nvarchar(30)
22611
+ * * Value List Type: List
22612
+ * * Possible Values
22613
+ * * AfterCreate
22614
+ * * AfterDelete
22615
+ * * AfterUpdate
22616
+ * * Validate
22617
+ * * Description: Which save event fires the on-change trigger: AfterCreate, AfterUpdate, AfterDelete, or Validate`),
22618
+ OnChangeFilter: z.string().nullable().describe(`
22619
+ * * Field Name: OnChangeFilter
22620
+ * * Display Name: On-Change Filter
22621
+ * * SQL Data Type: nvarchar(MAX)
22622
+ * * Description: Gating expression evaluated against the changed record (with changed-fields context) that compiles into the owned Entity Action Filter; only when it passes does the on-change trigger fire`),
22623
+ ScheduleEnabled: z.boolean().describe(`
22624
+ * * Field Name: ScheduleEnabled
22625
+ * * Display Name: Schedule Enabled
22626
+ * * SQL Data Type: bit
22627
+ * * Default Value: 0
22628
+ * * Description: When 1, the process runs on a cron schedule via an owned Scheduled Job`),
22629
+ CronExpression: z.string().nullable().describe(`
22630
+ * * Field Name: CronExpression
22631
+ * * Display Name: Cron Expression
22632
+ * * SQL Data Type: nvarchar(120)
22633
+ * * Description: Cron expression for the schedule trigger, when ScheduleEnabled=1`),
22634
+ Timezone: z.string().nullable().describe(`
22635
+ * * Field Name: Timezone
22636
+ * * Display Name: Timezone
22637
+ * * SQL Data Type: nvarchar(100)
22638
+ * * Default Value: UTC
22639
+ * * Description: IANA timezone for evaluating the cron expression (default UTC)`),
22640
+ OnDemandEnabled: z.boolean().describe(`
22641
+ * * Field Name: OnDemandEnabled
22642
+ * * Display Name: On-Demand Enabled
22643
+ * * SQL Data Type: bit
22644
+ * * Default Value: 1
22645
+ * * Description: When 1, the process can be run on demand (button / resolver)`),
22646
+ InputMapping: z.string().nullable().describe(`
22647
+ * * Field Name: InputMapping
22648
+ * * Display Name: Input Mapping
22649
+ * * SQL Data Type: nvarchar(MAX)
22650
+ * * Description: JSON mapping describing how a record maps to the work inputs (optionally including an EntityDocumentID for render-to-text)`),
22651
+ OutputMapping: z.string().nullable().describe(`
22652
+ * * Field Name: OutputMapping
22653
+ * * Display Name: Output Mapping
22654
+ * * SQL Data Type: nvarchar(MAX)
22655
+ * * Description: JSON mapping describing how the structured output payload writes back (to fields, a child record, or tags)`),
22656
+ SkipUnchanged: z.boolean().describe(`
22657
+ * * Field Name: SkipUnchanged
22658
+ * * Display Name: Skip Unchanged
22659
+ * * SQL Data Type: bit
22660
+ * * Default Value: 1
22661
+ * * Description: When 1, records whose watermark indicates no change since the last run are skipped`),
22662
+ WatermarkStrategy: z.union([z.literal('Checksum'), z.literal('None'), z.literal('UpdatedAt')]).nullable().describe(`
22663
+ * * Field Name: WatermarkStrategy
22664
+ * * Display Name: Watermark Strategy
22665
+ * * SQL Data Type: nvarchar(20)
22666
+ * * Value List Type: List
22667
+ * * Possible Values
22668
+ * * Checksum
22669
+ * * None
22670
+ * * UpdatedAt
22671
+ * * Description: How unchanged records are detected for SkipUnchanged: Checksum (per-record content hash, stored in RecordProcessWatermark), UpdatedAt (compares __mj_UpdatedAt, stores nothing), or None`),
22672
+ BatchSize: z.number().nullable().describe(`
22673
+ * * Field Name: BatchSize
22674
+ * * Display Name: Batch Size
22675
+ * * SQL Data Type: int
22676
+ * * Default Value: 100
22677
+ * * Description: Number of records processed per batch (default 100)`),
22678
+ MaxConcurrency: z.number().nullable().describe(`
22679
+ * * Field Name: MaxConcurrency
22680
+ * * Display Name: Max Concurrency
22681
+ * * SQL Data Type: int
22682
+ * * Default Value: 1
22683
+ * * Description: Maximum number of records processed concurrently within a batch (default 1)`),
22200
22684
  __mj_CreatedAt: z.date().describe(`
22201
22685
  * * Field Name: __mj_CreatedAt
22202
22686
  * * Display Name: Created At
@@ -22207,55 +22691,60 @@ export const MJReportUserStateSchema = z.object({
22207
22691
  * * Display Name: Updated At
22208
22692
  * * SQL Data Type: datetimeoffset
22209
22693
  * * Default Value: getutcdate()`),
22210
- Report: z.string().describe(`
22211
- * * Field Name: Report
22212
- * * Display Name: Report
22694
+ Category: z.string().nullable().describe(`
22695
+ * * Field Name: Category
22696
+ * * Display Name: Category (Display)
22213
22697
  * * SQL Data Type: nvarchar(255)`),
22214
- User: z.string().describe(`
22215
- * * Field Name: User
22216
- * * Display Name: User
22698
+ Entity: z.string().describe(`
22699
+ * * Field Name: Entity
22700
+ * * Display Name: Entity (Display)
22701
+ * * SQL Data Type: nvarchar(255)`),
22702
+ Action: z.string().nullable().describe(`
22703
+ * * Field Name: Action
22704
+ * * Display Name: Action (Display)
22705
+ * * SQL Data Type: nvarchar(425)`),
22706
+ Agent: z.string().nullable().describe(`
22707
+ * * Field Name: Agent
22708
+ * * Display Name: Agent (Display)
22709
+ * * SQL Data Type: nvarchar(255)`),
22710
+ Prompt: z.string().nullable().describe(`
22711
+ * * Field Name: Prompt
22712
+ * * Display Name: Prompt (Display)
22713
+ * * SQL Data Type: nvarchar(255)`),
22714
+ ScopeView: z.string().nullable().describe(`
22715
+ * * Field Name: ScopeView
22716
+ * * Display Name: Scope View (Display)
22717
+ * * SQL Data Type: nvarchar(100)`),
22718
+ ScopeList: z.string().nullable().describe(`
22719
+ * * Field Name: ScopeList
22720
+ * * Display Name: Scope List (Display)
22217
22721
  * * SQL Data Type: nvarchar(100)`),
22218
22722
  });
22219
22723
  /**
22220
- * zod schema definition for the entity MJ: Report Versions
22724
+ * zod schema definition for the entity MJ: Remote Operation Categories
22221
22725
  */
22222
- export const MJReportVersionSchema = z.object({
22726
+ export const MJRemoteOperationCategorySchema = z.object({
22223
22727
  ID: z.string().describe(`
22224
22728
  * * Field Name: ID
22225
22729
  * * Display Name: ID
22226
22730
  * * SQL Data Type: uniqueidentifier
22227
22731
  * * Default Value: newsequentialid()`),
22228
- ReportID: z.string().describe(`
22229
- * * Field Name: ReportID
22230
- * * Display Name: Report ID
22231
- * * SQL Data Type: uniqueidentifier
22232
- * * Related Entity/Foreign Key: MJ: Reports (vwReports.ID)`),
22233
- VersionNumber: z.number().describe(`
22234
- * * Field Name: VersionNumber
22235
- * * Display Name: Version Number
22236
- * * SQL Data Type: int
22237
- * * Description: Report version number, sequential per report starting at 1`),
22238
22732
  Name: z.string().describe(`
22239
22733
  * * Field Name: Name
22240
22734
  * * Display Name: Name
22241
22735
  * * SQL Data Type: nvarchar(255)
22242
- * * Description: Name of this report version`),
22736
+ * * Description: Display name of the category`),
22243
22737
  Description: z.string().nullable().describe(`
22244
22738
  * * Field Name: Description
22245
22739
  * * Display Name: Description
22246
22740
  * * SQL Data Type: nvarchar(MAX)
22247
- * * Description: Description of this report version`),
22248
- Configuration: z.string().nullable().describe(`
22249
- * * Field Name: Configuration
22250
- * * Display Name: Configuration
22251
- * * SQL Data Type: nvarchar(MAX)
22252
- * * Description: JSON configuration of report structure, layout and logic`),
22253
- DataContextUpdated: z.boolean().describe(`
22254
- * * Field Name: DataContextUpdated
22255
- * * Display Name: Data Context Updated
22256
- * * SQL Data Type: bit
22257
- * * Default Value: 0
22258
- * * Description: Indicates if the data context was updated in this version`),
22741
+ * * Description: Optional description of what belongs in this category`),
22742
+ ParentID: z.string().nullable().describe(`
22743
+ * * Field Name: ParentID
22744
+ * * Display Name: Parent Category
22745
+ * * SQL Data Type: uniqueidentifier
22746
+ * * Related Entity/Foreign Key: MJ: Remote Operation Categories (vwRemoteOperationCategories.ID)
22747
+ * * Description: Self-referencing foreign key to the parent category, enabling a nested folder hierarchy (NULL for a top-level category)`),
22259
22748
  __mj_CreatedAt: z.date().describe(`
22260
22749
  * * Field Name: __mj_CreatedAt
22261
22750
  * * Display Name: Created At
@@ -22266,15 +22755,19 @@ export const MJReportVersionSchema = z.object({
22266
22755
  * * Display Name: Updated At
22267
22756
  * * SQL Data Type: datetimeoffset
22268
22757
  * * Default Value: getutcdate()`),
22269
- Report: z.string().describe(`
22270
- * * Field Name: Report
22271
- * * Display Name: Report
22758
+ Parent: z.string().nullable().describe(`
22759
+ * * Field Name: Parent
22760
+ * * Display Name: Parent Name
22272
22761
  * * SQL Data Type: nvarchar(255)`),
22762
+ RootParentID: z.string().nullable().describe(`
22763
+ * * Field Name: RootParentID
22764
+ * * Display Name: Root Parent
22765
+ * * SQL Data Type: uniqueidentifier`),
22273
22766
  });
22274
22767
  /**
22275
- * zod schema definition for the entity MJ: Reports
22768
+ * zod schema definition for the entity MJ: Remote Operations
22276
22769
  */
22277
- export const MJReportSchema = z.object({
22770
+ export const MJRemoteOperationSchema = z.object({
22278
22771
  ID: z.string().describe(`
22279
22772
  * * Field Name: ID
22280
22773
  * * Display Name: ID
@@ -22283,61 +22776,423 @@ export const MJReportSchema = z.object({
22283
22776
  Name: z.string().describe(`
22284
22777
  * * Field Name: Name
22285
22778
  * * Display Name: Name
22286
- * * SQL Data Type: nvarchar(255)`),
22287
- Description: z.string().nullable().describe(`
22288
- * * Field Name: Description
22289
- * * Display Name: Description
22290
- * * SQL Data Type: nvarchar(MAX)`),
22779
+ * * SQL Data Type: nvarchar(255)
22780
+ * * Description: Human-readable name of the operation`),
22781
+ OperationKey: z.string().describe(`
22782
+ * * Field Name: OperationKey
22783
+ * * Display Name: Operation Key
22784
+ * * SQL Data Type: nvarchar(255)
22785
+ * * Description: Stable, unique registry key and wire token used to dispatch the operation (e.g., "RecordProcess.RunNow"). Namespaced by convention.`),
22291
22786
  CategoryID: z.string().nullable().describe(`
22292
22787
  * * Field Name: CategoryID
22293
22788
  * * Display Name: Category
22294
22789
  * * SQL Data Type: uniqueidentifier
22295
- * * Related Entity/Foreign Key: MJ: Report Categories (vwReportCategories.ID)`),
22296
- UserID: z.string().describe(`
22297
- * * Field Name: UserID
22298
- * * Display Name: User
22299
- * * SQL Data Type: uniqueidentifier
22300
- * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)`),
22301
- SharingScope: z.union([z.literal('Everyone'), z.literal('None'), z.literal('Specific')]).describe(`
22302
- * * Field Name: SharingScope
22303
- * * Display Name: Sharing Scope
22790
+ * * Related Entity/Foreign Key: MJ: Remote Operation Categories (vwRemoteOperationCategories.ID)
22791
+ * * Description: Optional hierarchical category for organizing this operation in the UI`),
22792
+ Description: z.string().nullable().describe(`
22793
+ * * Field Name: Description
22794
+ * * Display Name: Description
22795
+ * * SQL Data Type: nvarchar(MAX)
22796
+ * * Description: Human description of the operation; also the seed for AI-generated implementation code when GenerationType=AI`),
22797
+ InputTypeName: z.string().nullable().describe(`
22798
+ * * Field Name: InputTypeName
22799
+ * * Display Name: Input Type Name
22800
+ * * SQL Data Type: nvarchar(255)
22801
+ * * Description: TypeScript type name for the operation input (emitted by CodeGen as the TInput interface)`),
22802
+ InputTypeDefinition: z.string().nullable().describe(`
22803
+ * * Field Name: InputTypeDefinition
22804
+ * * Display Name: Input Type Definition
22805
+ * * SQL Data Type: nvarchar(MAX)
22806
+ * * Description: Raw TypeScript interface/type source defining the input shape (same mechanism as EntityField JSON-type definitions)`),
22807
+ InputTypeIsArray: z.boolean().describe(`
22808
+ * * Field Name: InputTypeIsArray
22809
+ * * Display Name: Is Input Array
22810
+ * * SQL Data Type: bit
22811
+ * * Default Value: 0
22812
+ * * Description: When 1, the input type is emitted as an array (TInput[])`),
22813
+ OutputTypeName: z.string().nullable().describe(`
22814
+ * * Field Name: OutputTypeName
22815
+ * * Display Name: Output Type Name
22816
+ * * SQL Data Type: nvarchar(255)
22817
+ * * Description: TypeScript type name for the operation output (emitted by CodeGen as the TOutput interface)`),
22818
+ OutputTypeDefinition: z.string().nullable().describe(`
22819
+ * * Field Name: OutputTypeDefinition
22820
+ * * Display Name: Output Type Definition
22821
+ * * SQL Data Type: nvarchar(MAX)
22822
+ * * Description: Raw TypeScript interface/type source defining the output shape`),
22823
+ OutputTypeIsArray: z.boolean().describe(`
22824
+ * * Field Name: OutputTypeIsArray
22825
+ * * Display Name: Is Output Array
22826
+ * * SQL Data Type: bit
22827
+ * * Default Value: 0
22828
+ * * Description: When 1, the output type is emitted as an array (TOutput[])`),
22829
+ ExecutionMode: z.union([z.literal('LongRunning'), z.literal('Sync')]).describe(`
22830
+ * * Field Name: ExecutionMode
22831
+ * * Display Name: Execution Mode
22304
22832
  * * SQL Data Type: nvarchar(20)
22305
- * * Default Value: Personal
22833
+ * * Default Value: Sync
22306
22834
  * * Value List Type: List
22307
22835
  * * Possible Values
22308
- * * Everyone
22309
- * * None
22310
- * * Specific
22311
- * * Description: Field SharingScope for entity Reports.`),
22312
- ConversationID: z.string().nullable().describe(`
22313
- * * Field Name: ConversationID
22314
- * * Display Name: Conversation
22315
- * * SQL Data Type: uniqueidentifier
22316
- * * Related Entity/Foreign Key: MJ: Conversations (vwConversations.ID)`),
22317
- ConversationDetailID: z.string().nullable().describe(`
22318
- * * Field Name: ConversationDetailID
22319
- * * Display Name: Conversation Detail
22320
- * * SQL Data Type: uniqueidentifier
22321
- * * Related Entity/Foreign Key: MJ: Conversation Details (vwConversationDetails.ID)`),
22322
- DataContextID: z.string().nullable().describe(`
22323
- * * Field Name: DataContextID
22324
- * * Display Name: Data Context
22325
- * * SQL Data Type: uniqueidentifier
22326
- * * Related Entity/Foreign Key: MJ: Data Contexts (vwDataContexts.ID)`),
22327
- Configuration: z.string().nullable().describe(`
22328
- * * Field Name: Configuration
22329
- * * Display Name: Configuration
22836
+ * * LongRunning
22837
+ * * Sync
22838
+ * * Description: Sync (request/response) or LongRunning (returns a handle; supports detached and attached consumption)`),
22839
+ RequiredScope: z.string().nullable().describe(`
22840
+ * * Field Name: RequiredScope
22841
+ * * Display Name: Required Scope
22842
+ * * SQL Data Type: nvarchar(255)
22843
+ * * Description: Optional API-key scope string (e.g., recordprocess:execute) enforced for API-key/MCP callers; NULL means no scope gate (interactive users are still bounded by their entity permissions)`),
22844
+ RequiresSystemUser: z.boolean().describe(`
22845
+ * * Field Name: RequiresSystemUser
22846
+ * * Display Name: Requires System User
22847
+ * * SQL Data Type: bit
22848
+ * * Default Value: 0
22849
+ * * Description: When 1, only the system user may invoke this operation`),
22850
+ GenerationType: z.union([z.literal('AI'), z.literal('Default'), z.literal('Manual')]).describe(`
22851
+ * * Field Name: GenerationType
22852
+ * * Display Name: Generation Type
22853
+ * * SQL Data Type: nvarchar(20)
22854
+ * * Default Value: Manual
22855
+ * * Value List Type: List
22856
+ * * Possible Values
22857
+ * * AI
22858
+ * * Default
22859
+ * * Manual
22860
+ * * Description: How the server implementation is provided: Manual (hand-written subclass), AI (generated from Description), or Default (standard generated plumbing)`),
22861
+ Code: z.string().nullable().describe(`
22862
+ * * Field Name: Code
22863
+ * * Display Name: Implementation Code
22330
22864
  * * SQL Data Type: nvarchar(MAX)
22331
- * * Description: Field Configuration for entity Reports.`),
22332
- OutputTriggerTypeID: z.string().nullable().describe(`
22333
- * * Field Name: OutputTriggerTypeID
22334
- * * Display Name: Output Trigger Type
22335
- * * SQL Data Type: uniqueidentifier
22336
- * * Related Entity/Foreign Key: MJ: Output Trigger Types (vwOutputTriggerTypes.ID)`),
22337
- OutputFormatTypeID: z.string().nullable().describe(`
22338
- * * Field Name: OutputFormatTypeID
22339
- * * Display Name: Output Format Type
22340
- * * SQL Data Type: uniqueidentifier
22865
+ * * Description: The AI-generated implementation body (when GenerationType=AI); regenerated only when Description changes`),
22866
+ CodeApprovalStatus: z.union([z.literal('Approved'), z.literal('Pending'), z.literal('Rejected')]).describe(`
22867
+ * * Field Name: CodeApprovalStatus
22868
+ * * Display Name: Approval Status
22869
+ * * SQL Data Type: nvarchar(20)
22870
+ * * Default Value: Pending
22871
+ * * Value List Type: List
22872
+ * * Possible Values
22873
+ * * Approved
22874
+ * * Pending
22875
+ * * Rejected
22876
+ * * Description: Human approval gate for AI-generated code: Pending, Approved, or Rejected. Only Approved AI code is emitted and routable.`),
22877
+ CodeApprovedByUserID: z.string().nullable().describe(`
22878
+ * * Field Name: CodeApprovedByUserID
22879
+ * * Display Name: Approved By User ID
22880
+ * * SQL Data Type: uniqueidentifier
22881
+ * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)
22882
+ * * Description: Foreign key to the user who approved the generated code`),
22883
+ CodeApprovedAt: z.date().nullable().describe(`
22884
+ * * Field Name: CodeApprovedAt
22885
+ * * Display Name: Approved At
22886
+ * * SQL Data Type: datetimeoffset
22887
+ * * Description: When the generated code was approved`),
22888
+ ContractFingerprint: z.string().nullable().describe(`
22889
+ * * Field Name: ContractFingerprint
22890
+ * * Display Name: Contract Fingerprint
22891
+ * * SQL Data Type: nvarchar(100)
22892
+ * * Description: Fingerprint of the input/output contract; carried in the wire envelope so the server can reject a stale client loudly instead of mis-deserializing`),
22893
+ Status: z.union([z.literal('Active'), z.literal('Disabled'), z.literal('Pending')]).describe(`
22894
+ * * Field Name: Status
22895
+ * * Display Name: Status
22896
+ * * SQL Data Type: nvarchar(20)
22897
+ * * Default Value: Pending
22898
+ * * Value List Type: List
22899
+ * * Possible Values
22900
+ * * Active
22901
+ * * Disabled
22902
+ * * Pending
22903
+ * * Description: Lifecycle status: Active (routable), Disabled, or Pending. Only Active operations can be invoked.`),
22904
+ CacheTTLSeconds: z.number().nullable().describe(`
22905
+ * * Field Name: CacheTTLSeconds
22906
+ * * Display Name: Cache TTL (Seconds)
22907
+ * * SQL Data Type: int
22908
+ * * Description: Optional result cache TTL in seconds (NULL = no caching)`),
22909
+ TimeoutMS: z.number().nullable().describe(`
22910
+ * * Field Name: TimeoutMS
22911
+ * * Display Name: Timeout (MS)
22912
+ * * SQL Data Type: int
22913
+ * * Description: Optional execution timeout in milliseconds`),
22914
+ MaxConcurrency: z.number().nullable().describe(`
22915
+ * * Field Name: MaxConcurrency
22916
+ * * Display Name: Max Concurrency
22917
+ * * SQL Data Type: int
22918
+ * * Description: Optional cap on concurrent executions of this operation`),
22919
+ __mj_CreatedAt: z.date().describe(`
22920
+ * * Field Name: __mj_CreatedAt
22921
+ * * Display Name: Created At
22922
+ * * SQL Data Type: datetimeoffset
22923
+ * * Default Value: getutcdate()`),
22924
+ __mj_UpdatedAt: z.date().describe(`
22925
+ * * Field Name: __mj_UpdatedAt
22926
+ * * Display Name: Updated At
22927
+ * * SQL Data Type: datetimeoffset
22928
+ * * Default Value: getutcdate()`),
22929
+ Category: z.string().nullable().describe(`
22930
+ * * Field Name: Category
22931
+ * * Display Name: Category Name
22932
+ * * SQL Data Type: nvarchar(255)`),
22933
+ CodeApprovedByUser: z.string().nullable().describe(`
22934
+ * * Field Name: CodeApprovedByUser
22935
+ * * Display Name: Approved By User
22936
+ * * SQL Data Type: nvarchar(100)`),
22937
+ });
22938
+ /**
22939
+ * zod schema definition for the entity MJ: Report Categories
22940
+ */
22941
+ export const MJReportCategorySchema = z.object({
22942
+ ID: z.string().describe(`
22943
+ * * Field Name: ID
22944
+ * * Display Name: ID
22945
+ * * SQL Data Type: uniqueidentifier
22946
+ * * Default Value: newsequentialid()`),
22947
+ Name: z.string().describe(`
22948
+ * * Field Name: Name
22949
+ * * Display Name: Name
22950
+ * * SQL Data Type: nvarchar(100)`),
22951
+ Description: z.string().nullable().describe(`
22952
+ * * Field Name: Description
22953
+ * * Display Name: Description
22954
+ * * SQL Data Type: nvarchar(MAX)`),
22955
+ ParentID: z.string().nullable().describe(`
22956
+ * * Field Name: ParentID
22957
+ * * Display Name: Parent ID
22958
+ * * SQL Data Type: uniqueidentifier
22959
+ * * Related Entity/Foreign Key: MJ: Report Categories (vwReportCategories.ID)`),
22960
+ UserID: z.string().describe(`
22961
+ * * Field Name: UserID
22962
+ * * Display Name: User ID
22963
+ * * SQL Data Type: uniqueidentifier
22964
+ * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)`),
22965
+ __mj_CreatedAt: z.date().describe(`
22966
+ * * Field Name: __mj_CreatedAt
22967
+ * * Display Name: Created At
22968
+ * * SQL Data Type: datetimeoffset
22969
+ * * Default Value: getutcdate()`),
22970
+ __mj_UpdatedAt: z.date().describe(`
22971
+ * * Field Name: __mj_UpdatedAt
22972
+ * * Display Name: Updated At
22973
+ * * SQL Data Type: datetimeoffset
22974
+ * * Default Value: getutcdate()`),
22975
+ Parent: z.string().nullable().describe(`
22976
+ * * Field Name: Parent
22977
+ * * Display Name: Parent
22978
+ * * SQL Data Type: nvarchar(100)`),
22979
+ User: z.string().describe(`
22980
+ * * Field Name: User
22981
+ * * Display Name: User
22982
+ * * SQL Data Type: nvarchar(100)`),
22983
+ RootParentID: z.string().nullable().describe(`
22984
+ * * Field Name: RootParentID
22985
+ * * Display Name: Root Parent ID
22986
+ * * SQL Data Type: uniqueidentifier`),
22987
+ });
22988
+ /**
22989
+ * zod schema definition for the entity MJ: Report Snapshots
22990
+ */
22991
+ export const MJReportSnapshotSchema = z.object({
22992
+ ID: z.string().describe(`
22993
+ * * Field Name: ID
22994
+ * * Display Name: ID
22995
+ * * SQL Data Type: uniqueidentifier
22996
+ * * Default Value: newsequentialid()`),
22997
+ ReportID: z.string().describe(`
22998
+ * * Field Name: ReportID
22999
+ * * Display Name: Report ID
23000
+ * * SQL Data Type: uniqueidentifier
23001
+ * * Related Entity/Foreign Key: MJ: Reports (vwReports.ID)`),
23002
+ ResultSet: z.string().describe(`
23003
+ * * Field Name: ResultSet
23004
+ * * Display Name: Result Set
23005
+ * * SQL Data Type: nvarchar(MAX)
23006
+ * * Description: Field ResultSet for entity Report Snapshots.`),
23007
+ UserID: z.string().describe(`
23008
+ * * Field Name: UserID
23009
+ * * Display Name: User ID
23010
+ * * SQL Data Type: uniqueidentifier
23011
+ * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)`),
23012
+ __mj_CreatedAt: z.date().describe(`
23013
+ * * Field Name: __mj_CreatedAt
23014
+ * * Display Name: Created At
23015
+ * * SQL Data Type: datetimeoffset
23016
+ * * Default Value: getutcdate()`),
23017
+ __mj_UpdatedAt: z.date().describe(`
23018
+ * * Field Name: __mj_UpdatedAt
23019
+ * * Display Name: Updated At
23020
+ * * SQL Data Type: datetimeoffset
23021
+ * * Default Value: getutcdate()`),
23022
+ Report: z.string().describe(`
23023
+ * * Field Name: Report
23024
+ * * Display Name: Report
23025
+ * * SQL Data Type: nvarchar(255)`),
23026
+ User: z.string().describe(`
23027
+ * * Field Name: User
23028
+ * * Display Name: User
23029
+ * * SQL Data Type: nvarchar(100)`),
23030
+ });
23031
+ /**
23032
+ * zod schema definition for the entity MJ: Report User States
23033
+ */
23034
+ export const MJReportUserStateSchema = z.object({
23035
+ ID: z.string().describe(`
23036
+ * * Field Name: ID
23037
+ * * Display Name: ID
23038
+ * * SQL Data Type: uniqueidentifier
23039
+ * * Default Value: newsequentialid()`),
23040
+ ReportID: z.string().describe(`
23041
+ * * Field Name: ReportID
23042
+ * * Display Name: Report ID
23043
+ * * SQL Data Type: uniqueidentifier
23044
+ * * Related Entity/Foreign Key: MJ: Reports (vwReports.ID)`),
23045
+ UserID: z.string().describe(`
23046
+ * * Field Name: UserID
23047
+ * * Display Name: User ID
23048
+ * * SQL Data Type: uniqueidentifier
23049
+ * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)`),
23050
+ ReportState: z.string().nullable().describe(`
23051
+ * * Field Name: ReportState
23052
+ * * Display Name: Report State
23053
+ * * SQL Data Type: nvarchar(MAX)
23054
+ * * Description: JSON serialized state of user interaction with the report`),
23055
+ __mj_CreatedAt: z.date().describe(`
23056
+ * * Field Name: __mj_CreatedAt
23057
+ * * Display Name: Created At
23058
+ * * SQL Data Type: datetimeoffset
23059
+ * * Default Value: getutcdate()`),
23060
+ __mj_UpdatedAt: z.date().describe(`
23061
+ * * Field Name: __mj_UpdatedAt
23062
+ * * Display Name: Updated At
23063
+ * * SQL Data Type: datetimeoffset
23064
+ * * Default Value: getutcdate()`),
23065
+ Report: z.string().describe(`
23066
+ * * Field Name: Report
23067
+ * * Display Name: Report
23068
+ * * SQL Data Type: nvarchar(255)`),
23069
+ User: z.string().describe(`
23070
+ * * Field Name: User
23071
+ * * Display Name: User
23072
+ * * SQL Data Type: nvarchar(100)`),
23073
+ });
23074
+ /**
23075
+ * zod schema definition for the entity MJ: Report Versions
23076
+ */
23077
+ export const MJReportVersionSchema = z.object({
23078
+ ID: z.string().describe(`
23079
+ * * Field Name: ID
23080
+ * * Display Name: ID
23081
+ * * SQL Data Type: uniqueidentifier
23082
+ * * Default Value: newsequentialid()`),
23083
+ ReportID: z.string().describe(`
23084
+ * * Field Name: ReportID
23085
+ * * Display Name: Report ID
23086
+ * * SQL Data Type: uniqueidentifier
23087
+ * * Related Entity/Foreign Key: MJ: Reports (vwReports.ID)`),
23088
+ VersionNumber: z.number().describe(`
23089
+ * * Field Name: VersionNumber
23090
+ * * Display Name: Version Number
23091
+ * * SQL Data Type: int
23092
+ * * Description: Report version number, sequential per report starting at 1`),
23093
+ Name: z.string().describe(`
23094
+ * * Field Name: Name
23095
+ * * Display Name: Name
23096
+ * * SQL Data Type: nvarchar(255)
23097
+ * * Description: Name of this report version`),
23098
+ Description: z.string().nullable().describe(`
23099
+ * * Field Name: Description
23100
+ * * Display Name: Description
23101
+ * * SQL Data Type: nvarchar(MAX)
23102
+ * * Description: Description of this report version`),
23103
+ Configuration: z.string().nullable().describe(`
23104
+ * * Field Name: Configuration
23105
+ * * Display Name: Configuration
23106
+ * * SQL Data Type: nvarchar(MAX)
23107
+ * * Description: JSON configuration of report structure, layout and logic`),
23108
+ DataContextUpdated: z.boolean().describe(`
23109
+ * * Field Name: DataContextUpdated
23110
+ * * Display Name: Data Context Updated
23111
+ * * SQL Data Type: bit
23112
+ * * Default Value: 0
23113
+ * * Description: Indicates if the data context was updated in this version`),
23114
+ __mj_CreatedAt: z.date().describe(`
23115
+ * * Field Name: __mj_CreatedAt
23116
+ * * Display Name: Created At
23117
+ * * SQL Data Type: datetimeoffset
23118
+ * * Default Value: getutcdate()`),
23119
+ __mj_UpdatedAt: z.date().describe(`
23120
+ * * Field Name: __mj_UpdatedAt
23121
+ * * Display Name: Updated At
23122
+ * * SQL Data Type: datetimeoffset
23123
+ * * Default Value: getutcdate()`),
23124
+ Report: z.string().describe(`
23125
+ * * Field Name: Report
23126
+ * * Display Name: Report
23127
+ * * SQL Data Type: nvarchar(255)`),
23128
+ });
23129
+ /**
23130
+ * zod schema definition for the entity MJ: Reports
23131
+ */
23132
+ export const MJReportSchema = z.object({
23133
+ ID: z.string().describe(`
23134
+ * * Field Name: ID
23135
+ * * Display Name: ID
23136
+ * * SQL Data Type: uniqueidentifier
23137
+ * * Default Value: newsequentialid()`),
23138
+ Name: z.string().describe(`
23139
+ * * Field Name: Name
23140
+ * * Display Name: Name
23141
+ * * SQL Data Type: nvarchar(255)`),
23142
+ Description: z.string().nullable().describe(`
23143
+ * * Field Name: Description
23144
+ * * Display Name: Description
23145
+ * * SQL Data Type: nvarchar(MAX)`),
23146
+ CategoryID: z.string().nullable().describe(`
23147
+ * * Field Name: CategoryID
23148
+ * * Display Name: Category
23149
+ * * SQL Data Type: uniqueidentifier
23150
+ * * Related Entity/Foreign Key: MJ: Report Categories (vwReportCategories.ID)`),
23151
+ UserID: z.string().describe(`
23152
+ * * Field Name: UserID
23153
+ * * Display Name: User
23154
+ * * SQL Data Type: uniqueidentifier
23155
+ * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)`),
23156
+ SharingScope: z.union([z.literal('Everyone'), z.literal('None'), z.literal('Specific')]).describe(`
23157
+ * * Field Name: SharingScope
23158
+ * * Display Name: Sharing Scope
23159
+ * * SQL Data Type: nvarchar(20)
23160
+ * * Default Value: Personal
23161
+ * * Value List Type: List
23162
+ * * Possible Values
23163
+ * * Everyone
23164
+ * * None
23165
+ * * Specific
23166
+ * * Description: Field SharingScope for entity Reports.`),
23167
+ ConversationID: z.string().nullable().describe(`
23168
+ * * Field Name: ConversationID
23169
+ * * Display Name: Conversation
23170
+ * * SQL Data Type: uniqueidentifier
23171
+ * * Related Entity/Foreign Key: MJ: Conversations (vwConversations.ID)`),
23172
+ ConversationDetailID: z.string().nullable().describe(`
23173
+ * * Field Name: ConversationDetailID
23174
+ * * Display Name: Conversation Detail
23175
+ * * SQL Data Type: uniqueidentifier
23176
+ * * Related Entity/Foreign Key: MJ: Conversation Details (vwConversationDetails.ID)`),
23177
+ DataContextID: z.string().nullable().describe(`
23178
+ * * Field Name: DataContextID
23179
+ * * Display Name: Data Context
23180
+ * * SQL Data Type: uniqueidentifier
23181
+ * * Related Entity/Foreign Key: MJ: Data Contexts (vwDataContexts.ID)`),
23182
+ Configuration: z.string().nullable().describe(`
23183
+ * * Field Name: Configuration
23184
+ * * Display Name: Configuration
23185
+ * * SQL Data Type: nvarchar(MAX)
23186
+ * * Description: Field Configuration for entity Reports.`),
23187
+ OutputTriggerTypeID: z.string().nullable().describe(`
23188
+ * * Field Name: OutputTriggerTypeID
23189
+ * * Display Name: Output Trigger Type
23190
+ * * SQL Data Type: uniqueidentifier
23191
+ * * Related Entity/Foreign Key: MJ: Output Trigger Types (vwOutputTriggerTypes.ID)`),
23192
+ OutputFormatTypeID: z.string().nullable().describe(`
23193
+ * * Field Name: OutputFormatTypeID
23194
+ * * Display Name: Output Format Type
23195
+ * * SQL Data Type: uniqueidentifier
22341
23196
  * * Related Entity/Foreign Key: MJ: Output Format Types (vwOutputFormatTypes.ID)`),
22342
23197
  OutputDeliveryTypeID: z.string().nullable().describe(`
22343
23198
  * * Field Name: OutputDeliveryTypeID
@@ -33293,7 +34148,7 @@ let MJAIAgentNoteEntity = class MJAIAgentNoteEntity extends BaseEntity {
33293
34148
  }
33294
34149
  /**
33295
34150
  * * Field Name: SourceConversationDetail
33296
- * * Display Name: Source Conversation Detail
34151
+ * * Display Name: Source Conversation Detail Name
33297
34152
  * * SQL Data Type: nvarchar(100)
33298
34153
  */
33299
34154
  get SourceConversationDetail() {
@@ -67097,6 +67952,41 @@ let MJEntityDocumentEntity = class MJEntityDocumentEntity extends BaseEntity {
67097
67952
  return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
67098
67953
  }
67099
67954
  /**
67955
+ * MJ: Entity Documents - Delete method override to wrap in transaction since CascadeDeletes is true.
67956
+ * Wrapping in a transaction ensures that all cascade delete operations are handled atomically.
67957
+ * @public
67958
+ * @method
67959
+ * @override
67960
+ * @memberof MJEntityDocumentEntity
67961
+ * @returns {Promise<boolean>} - true if successful, false otherwise
67962
+ */
67963
+ async Delete(options) {
67964
+ if (Metadata.Provider.ProviderType === ProviderType.Database) { // global-provider-ok: codegen runs offline against a single provider
67965
+ // For database providers, use the transaction methods directly
67966
+ const provider = Metadata.Provider; // global-provider-ok: codegen runs offline against a single provider
67967
+ try {
67968
+ await provider.BeginTransaction();
67969
+ const result = await super.Delete(options);
67970
+ if (result) {
67971
+ await provider.CommitTransaction();
67972
+ return true;
67973
+ }
67974
+ else {
67975
+ await provider.RollbackTransaction();
67976
+ return false;
67977
+ }
67978
+ }
67979
+ catch (error) {
67980
+ await provider.RollbackTransaction();
67981
+ throw error;
67982
+ }
67983
+ }
67984
+ else {
67985
+ // For network providers, cascading deletes are handled server-side
67986
+ return super.Delete(options);
67987
+ }
67988
+ }
67989
+ /**
67100
67990
  * Validate() method override for MJ: Entity Documents entity. This is an auto-generated method that invokes the generated validators for this entity for the following fields:
67101
67991
  * * Table-Level: This rule ensures that both the Potential Match Threshold and the Absolute Match Threshold are numbers between 0 and 1, inclusive. Additionally, the Potential Match Threshold must not be higher than the Absolute Match Threshold.
67102
67992
  * @public
@@ -72570,7 +73460,7 @@ let MJIntegrationObjectEntity = class MJIntegrationObjectEntity extends BaseEnti
72570
73460
  }
72571
73461
  /**
72572
73462
  * * Field Name: IntegrationID
72573
- * * Display Name: Integration
73463
+ * * Display Name: Integration ID
72574
73464
  * * SQL Data Type: uniqueidentifier
72575
73465
  * * Related Entity/Foreign Key: MJ: Integrations (vwIntegrations.ID)
72576
73466
  * * Description: Foreign key to the Integration that owns this object
@@ -73051,8 +73941,84 @@ let MJIntegrationObjectEntity = class MJIntegrationObjectEntity extends BaseEnti
73051
73941
  this.Set('MetadataSource', value);
73052
73942
  }
73053
73943
  /**
73944
+ * * Field Name: SupportsCreate
73945
+ * * Display Name: Supports Create
73946
+ * * SQL Data Type: bit
73947
+ * * Default Value: 0
73948
+ * * Description: Whether this object supports record creation in the external system (per-operation granularity beyond SupportsWrite). Drives whether the generic CreateRecord path is wired and whether the object is offered for write-back create.
73949
+ */
73950
+ get SupportsCreate() {
73951
+ return this.Get('SupportsCreate');
73952
+ }
73953
+ set SupportsCreate(value) {
73954
+ this.Set('SupportsCreate', value);
73955
+ }
73956
+ /**
73957
+ * * Field Name: SupportsUpdate
73958
+ * * Display Name: Supports Update
73959
+ * * SQL Data Type: bit
73960
+ * * Default Value: 0
73961
+ * * Description: Whether this object supports record updates in the external system (per-operation granularity beyond SupportsWrite).
73962
+ */
73963
+ get SupportsUpdate() {
73964
+ return this.Get('SupportsUpdate');
73965
+ }
73966
+ set SupportsUpdate(value) {
73967
+ this.Set('SupportsUpdate', value);
73968
+ }
73969
+ /**
73970
+ * * Field Name: SupportsDelete
73971
+ * * Display Name: Supports Delete
73972
+ * * SQL Data Type: bit
73973
+ * * Default Value: 0
73974
+ * * Description: Whether this object supports record deletion/tombstoning in the external system (per-operation granularity beyond SupportsWrite).
73975
+ */
73976
+ get SupportsDelete() {
73977
+ return this.Get('SupportsDelete');
73978
+ }
73979
+ set SupportsDelete(value) {
73980
+ this.Set('SupportsDelete', value);
73981
+ }
73982
+ /**
73983
+ * * Field Name: SyncStrategy
73984
+ * * Display Name: Sync Strategy
73985
+ * * SQL Data Type: nvarchar(50)
73986
+ * * Description: Declared incremental sync strategy for this object (e.g. WatermarkIncremental, ContentHash, FullSnapshot). Informs how the engine narrows subsequent syncs.
73987
+ */
73988
+ get SyncStrategy() {
73989
+ return this.Get('SyncStrategy');
73990
+ }
73991
+ set SyncStrategy(value) {
73992
+ this.Set('SyncStrategy', value);
73993
+ }
73994
+ /**
73995
+ * * Field Name: ContentHashApplicable
73996
+ * * Display Name: Content Hash Applicable
73997
+ * * SQL Data Type: bit
73998
+ * * Default Value: 1
73999
+ * * Description: Whether per-record content hashing is meaningful for this object (false for append-only/event streams where every row is new). Controls whether the engine uses content-hash to skip unchanged-row writes.
74000
+ */
74001
+ get ContentHashApplicable() {
74002
+ return this.Get('ContentHashApplicable');
74003
+ }
74004
+ set ContentHashApplicable(value) {
74005
+ this.Set('ContentHashApplicable', value);
74006
+ }
74007
+ /**
74008
+ * * Field Name: StableOrderingKey
74009
+ * * Display Name: Stable Ordering Key
74010
+ * * SQL Data Type: nvarchar(255)
74011
+ * * Description: Stable, monotonic ordering column (usually the PK) used for keyset/no-watermark resume of a scan. Null when the object has no stable key.
74012
+ */
74013
+ get StableOrderingKey() {
74014
+ return this.Get('StableOrderingKey');
74015
+ }
74016
+ set StableOrderingKey(value) {
74017
+ this.Set('StableOrderingKey', value);
74018
+ }
74019
+ /**
73054
74020
  * * Field Name: Integration
73055
- * * Display Name: Integration Name
74021
+ * * Display Name: Integration
73056
74022
  * * SQL Data Type: nvarchar(100)
73057
74023
  */
73058
74024
  get Integration() {
@@ -73492,6 +74458,18 @@ let MJIntegrationEntity = class MJIntegrationEntity extends BaseEntity {
73492
74458
  this.Set('Icon', value);
73493
74459
  }
73494
74460
  /**
74461
+ * * Field Name: Configuration
74462
+ * * Display Name: Configuration
74463
+ * * SQL Data Type: nvarchar(MAX)
74464
+ * * Description: Integration-level connector configuration JSON (e.g. out-of-scope object families, vendor-specific tuning). Free-form JSON the connector reads at runtime.
74465
+ */
74466
+ get Configuration() {
74467
+ return this.Get('Configuration');
74468
+ }
74469
+ set Configuration(value) {
74470
+ this.Set('Configuration', value);
74471
+ }
74472
+ /**
73495
74473
  * * Field Name: CredentialType
73496
74474
  * * Display Name: Credential Type Name
73497
74475
  * * SQL Data Type: nvarchar(100)
@@ -79234,25 +80212,25 @@ MJPermissionDomainEntity = __decorate([
79234
80212
  ], MJPermissionDomainEntity);
79235
80213
  export { MJPermissionDomainEntity };
79236
80214
  /**
79237
- * MJ: Projects - strongly typed entity sub-class
80215
+ * MJ: Process Run Details - strongly typed entity sub-class
79238
80216
  * * Schema: __mj
79239
- * * Base Table: Project
79240
- * * Base View: vwProjects
79241
- * * @description Container for grouping related conversations around a common topic, client, or initiative. Supports nesting for sub-projects.
80217
+ * * Base Table: ProcessRunDetail
80218
+ * * Base View: vwProcessRunDetails
80219
+ * * @description Per-record result within a Process Run: powers audit, resume (skip already-done records), and the run-viewer UX. One row per processed record. EXAMPLE: customer CUST-00417 -> Succeeded with ResultPayload {"satisfaction":"High","sentiment":0.82} and a link to its AI Agent Run; customer CUST-00418 -> Failed with ErrorMessage "Model timeout".
79242
80220
  * * Primary Key: ID
79243
80221
  * @extends {BaseEntity}
79244
80222
  * @class
79245
80223
  * @public
79246
80224
  */
79247
- let MJProjectEntity = class MJProjectEntity extends BaseEntity {
80225
+ let MJProcessRunDetailEntity = class MJProcessRunDetailEntity extends BaseEntity {
79248
80226
  /**
79249
- * Loads the MJ: Projects record from the database
79250
- * @param ID: string - primary key value to load the MJ: Projects record.
80227
+ * Loads the MJ: Process Run Details record from the database
80228
+ * @param ID: string - primary key value to load the MJ: Process Run Details record.
79251
80229
  * @param EntityRelationshipsToLoad - (optional) the relationships to load
79252
80230
  * @returns {Promise<boolean>} - true if successful, false otherwise
79253
80231
  * @public
79254
80232
  * @async
79255
- * @memberof MJProjectEntity
80233
+ * @memberof MJProcessRunDetailEntity
79256
80234
  * @method
79257
80235
  * @override
79258
80236
  */
@@ -79274,90 +80252,160 @@ let MJProjectEntity = class MJProjectEntity extends BaseEntity {
79274
80252
  this.Set('ID', value);
79275
80253
  }
79276
80254
  /**
79277
- * * Field Name: EnvironmentID
79278
- * * Display Name: Environment ID
80255
+ * * Field Name: ProcessRunID
80256
+ * * Display Name: Process Run
79279
80257
  * * SQL Data Type: uniqueidentifier
79280
- * * Related Entity/Foreign Key: MJ: Environments (vwEnvironments.ID)
79281
- * * Default Value: F51358F3-9447-4176-B313-BF8025FD8D09
80258
+ * * Related Entity/Foreign Key: MJ: Process Runs (vwProcessRuns.ID)
80259
+ * * Description: Foreign key to the parent Process Run
79282
80260
  */
79283
- get EnvironmentID() {
79284
- return this.Get('EnvironmentID');
80261
+ get ProcessRunID() {
80262
+ return this.Get('ProcessRunID');
79285
80263
  }
79286
- set EnvironmentID(value) {
79287
- this.Set('EnvironmentID', value);
80264
+ set ProcessRunID(value) {
80265
+ this.Set('ProcessRunID', value);
79288
80266
  }
79289
80267
  /**
79290
- * * Field Name: ParentID
79291
- * * Display Name: Parent ID
80268
+ * * Field Name: EntityID
80269
+ * * Display Name: Entity ID
79292
80270
  * * SQL Data Type: uniqueidentifier
79293
- * * Related Entity/Foreign Key: MJ: Projects (vwProjects.ID)
80271
+ * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)
80272
+ * * Description: Foreign key to the entity of the processed record. Stored (not inherited) because a single run may span entities for ad-hoc / engine-driven runs.
79294
80273
  */
79295
- get ParentID() {
79296
- return this.Get('ParentID');
80274
+ get EntityID() {
80275
+ return this.Get('EntityID');
79297
80276
  }
79298
- set ParentID(value) {
79299
- this.Set('ParentID', value);
80277
+ set EntityID(value) {
80278
+ this.Set('EntityID', value);
79300
80279
  }
79301
80280
  /**
79302
- * * Field Name: Name
79303
- * * Display Name: Name
79304
- * * SQL Data Type: nvarchar(255)
79305
- * * Description: Display name for the project
80281
+ * * Field Name: RecordID
80282
+ * * Display Name: Record ID
80283
+ * * SQL Data Type: nvarchar(450)
80284
+ * * Description: Primary key of the processed record, stored as text to remain composite-key safe
79306
80285
  */
79307
- get Name() {
79308
- return this.Get('Name');
80286
+ get RecordID() {
80287
+ return this.Get('RecordID');
79309
80288
  }
79310
- set Name(value) {
79311
- this.Set('Name', value);
80289
+ set RecordID(value) {
80290
+ this.Set('RecordID', value);
79312
80291
  }
79313
80292
  /**
79314
- * * Field Name: Description
79315
- * * Display Name: Description
79316
- * * SQL Data Type: nvarchar(MAX)
79317
- * * Description: Detailed description of the project goals and scope
80293
+ * * Field Name: Status
80294
+ * * Display Name: Status
80295
+ * * SQL Data Type: nvarchar(20)
80296
+ * * Default Value: Pending
80297
+ * * Value List Type: List
80298
+ * * Possible Values
80299
+ * * Failed
80300
+ * * Pending
80301
+ * * Skipped
80302
+ * * Succeeded
80303
+ * * Description: Per-record status: Pending, Succeeded, Failed, or Skipped
79318
80304
  */
79319
- get Description() {
79320
- return this.Get('Description');
80305
+ get Status() {
80306
+ return this.Get('Status');
79321
80307
  }
79322
- set Description(value) {
79323
- this.Set('Description', value);
80308
+ set Status(value) {
80309
+ this.Set('Status', value);
79324
80310
  }
79325
80311
  /**
79326
- * * Field Name: Color
79327
- * * Display Name: Color
79328
- * * SQL Data Type: nvarchar(7)
79329
- * * Description: Hex color code for project badges in UI (#RRGGBB format)
80312
+ * * Field Name: StartedAt
80313
+ * * Display Name: Started At
80314
+ * * SQL Data Type: datetimeoffset
80315
+ * * Description: When processing of this record started
79330
80316
  */
79331
- get Color() {
79332
- return this.Get('Color');
80317
+ get StartedAt() {
80318
+ return this.Get('StartedAt');
79333
80319
  }
79334
- set Color(value) {
79335
- this.Set('Color', value);
80320
+ set StartedAt(value) {
80321
+ this.Set('StartedAt', value);
79336
80322
  }
79337
80323
  /**
79338
- * * Field Name: Icon
79339
- * * Display Name: Icon
79340
- * * SQL Data Type: nvarchar(50)
79341
- * * Description: Font Awesome icon class for UI display
80324
+ * * Field Name: CompletedAt
80325
+ * * Display Name: Completed At
80326
+ * * SQL Data Type: datetimeoffset
80327
+ * * Description: When processing of this record completed
79342
80328
  */
79343
- get Icon() {
79344
- return this.Get('Icon');
80329
+ get CompletedAt() {
80330
+ return this.Get('CompletedAt');
79345
80331
  }
79346
- set Icon(value) {
79347
- this.Set('Icon', value);
80332
+ set CompletedAt(value) {
80333
+ this.Set('CompletedAt', value);
79348
80334
  }
79349
80335
  /**
79350
- * * Field Name: IsArchived
79351
- * * Display Name: Is Archived
79352
- * * SQL Data Type: bit
80336
+ * * Field Name: DurationMs
80337
+ * * Display Name: Duration (ms)
80338
+ * * SQL Data Type: int
80339
+ * * Description: Processing duration for this record in milliseconds
80340
+ */
80341
+ get DurationMs() {
80342
+ return this.Get('DurationMs');
80343
+ }
80344
+ set DurationMs(value) {
80345
+ this.Set('DurationMs', value);
80346
+ }
80347
+ /**
80348
+ * * Field Name: AttemptCount
80349
+ * * Display Name: Attempt Count
80350
+ * * SQL Data Type: int
79353
80351
  * * Default Value: 0
79354
- * * Description: Indicates if this project is archived and should be hidden from active lists
80352
+ * * Description: Number of processing attempts for this record (supports retry)
79355
80353
  */
79356
- get IsArchived() {
79357
- return this.Get('IsArchived');
80354
+ get AttemptCount() {
80355
+ return this.Get('AttemptCount');
79358
80356
  }
79359
- set IsArchived(value) {
79360
- this.Set('IsArchived', value);
80357
+ set AttemptCount(value) {
80358
+ this.Set('AttemptCount', value);
80359
+ }
80360
+ /**
80361
+ * * Field Name: ResultPayload
80362
+ * * Display Name: Result Payload
80363
+ * * SQL Data Type: nvarchar(MAX)
80364
+ * * Description: Structured output payload (JSON) produced for this record
80365
+ */
80366
+ get ResultPayload() {
80367
+ return this.Get('ResultPayload');
80368
+ }
80369
+ set ResultPayload(value) {
80370
+ this.Set('ResultPayload', value);
80371
+ }
80372
+ /**
80373
+ * * Field Name: ErrorMessage
80374
+ * * Display Name: Error Message
80375
+ * * SQL Data Type: nvarchar(MAX)
80376
+ * * Description: Per-record error message when Status=Failed
80377
+ */
80378
+ get ErrorMessage() {
80379
+ return this.Get('ErrorMessage');
80380
+ }
80381
+ set ErrorMessage(value) {
80382
+ this.Set('ErrorMessage', value);
80383
+ }
80384
+ /**
80385
+ * * Field Name: ActionExecutionLogID
80386
+ * * Display Name: Action Execution Log ID
80387
+ * * SQL Data Type: uniqueidentifier
80388
+ * * Related Entity/Foreign Key: MJ: Action Execution Logs (vwActionExecutionLogs.ID)
80389
+ * * Description: Foreign key to the Action Execution Log for deep tracing, when the work was an Action
80390
+ */
80391
+ get ActionExecutionLogID() {
80392
+ return this.Get('ActionExecutionLogID');
80393
+ }
80394
+ set ActionExecutionLogID(value) {
80395
+ this.Set('ActionExecutionLogID', value);
80396
+ }
80397
+ /**
80398
+ * * Field Name: AIAgentRunID
80399
+ * * Display Name: AI Agent Run ID
80400
+ * * SQL Data Type: uniqueidentifier
80401
+ * * Related Entity/Foreign Key: MJ: AI Agent Runs (vwAIAgentRuns.ID)
80402
+ * * Description: Foreign key to the AI Agent Run for deep tracing, when the work was an Agent
80403
+ */
80404
+ get AIAgentRunID() {
80405
+ return this.Get('AIAgentRunID');
80406
+ }
80407
+ set AIAgentRunID(value) {
80408
+ this.Set('AIAgentRunID', value);
79361
80409
  }
79362
80410
  /**
79363
80411
  * * Field Name: __mj_CreatedAt
@@ -79378,54 +80426,618 @@ let MJProjectEntity = class MJProjectEntity extends BaseEntity {
79378
80426
  return this.Get('__mj_UpdatedAt');
79379
80427
  }
79380
80428
  /**
79381
- * * Field Name: Environment
79382
- * * Display Name: Environment
80429
+ * * Field Name: Entity
80430
+ * * Display Name: Entity Name
79383
80431
  * * SQL Data Type: nvarchar(255)
79384
80432
  */
79385
- get Environment() {
79386
- return this.Get('Environment');
80433
+ get Entity() {
80434
+ return this.Get('Entity');
79387
80435
  }
79388
80436
  /**
79389
- * * Field Name: Parent
79390
- * * Display Name: Parent
79391
- * * SQL Data Type: nvarchar(255)
80437
+ * * Field Name: ActionExecutionLog
80438
+ * * Display Name: Action Execution Log
80439
+ * * SQL Data Type: nvarchar(425)
79392
80440
  */
79393
- get Parent() {
79394
- return this.Get('Parent');
80441
+ get ActionExecutionLog() {
80442
+ return this.Get('ActionExecutionLog');
79395
80443
  }
79396
80444
  /**
79397
- * * Field Name: RootParentID
79398
- * * Display Name: Root Parent ID
79399
- * * SQL Data Type: uniqueidentifier
80445
+ * * Field Name: AIAgentRun
80446
+ * * Display Name: AI Agent Run
80447
+ * * SQL Data Type: nvarchar(255)
79400
80448
  */
79401
- get RootParentID() {
79402
- return this.Get('RootParentID');
80449
+ get AIAgentRun() {
80450
+ return this.Get('AIAgentRun');
79403
80451
  }
79404
80452
  };
79405
- MJProjectEntity = __decorate([
79406
- RegisterClass(BaseEntity, 'MJ: Projects')
79407
- ], MJProjectEntity);
79408
- export { MJProjectEntity };
80453
+ MJProcessRunDetailEntity = __decorate([
80454
+ RegisterClass(BaseEntity, 'MJ: Process Run Details')
80455
+ ], MJProcessRunDetailEntity);
80456
+ export { MJProcessRunDetailEntity };
79409
80457
  /**
79410
- * MJ: Public Links - strongly typed entity sub-class
80458
+ * MJ: Process Runs - strongly typed entity sub-class
79411
80459
  * * Schema: __mj
79412
- * * Base Table: PublicLink
79413
- * * Base View: vwPublicLinks
79414
- * * @description Shareable links for external access to artifacts and other resources. Supports password protection and expiration.
80460
+ * * Base Table: ProcessRun
80461
+ * * Base View: vwProcessRuns
80462
+ * * @description Source-agnostic header for one execution of any set-processing job. Deliberately generic: a Record Process run sets RecordProcessID, but legacy/engine-driven jobs (e.g., a geocoding sweep or vector sync) keep their own source tables and still record a run here with RecordProcessID = NULL, giving every batch a uniform audit + resume trail. EXAMPLE: the Saturday 2am run of "Weekly Customer Health Summary" over 1,284 active customers (RecordProcessID set, TriggeredBy=Schedule); or a nightly geocoding sweep (RecordProcessID NULL).
79415
80463
  * * Primary Key: ID
79416
80464
  * @extends {BaseEntity}
79417
80465
  * @class
79418
80466
  * @public
79419
80467
  */
79420
- let MJPublicLinkEntity = class MJPublicLinkEntity extends BaseEntity {
80468
+ let MJProcessRunEntity = class MJProcessRunEntity extends BaseEntity {
79421
80469
  /**
79422
- * Loads the MJ: Public Links record from the database
79423
- * @param ID: string - primary key value to load the MJ: Public Links record.
80470
+ * Loads the MJ: Process Runs record from the database
80471
+ * @param ID: string - primary key value to load the MJ: Process Runs record.
79424
80472
  * @param EntityRelationshipsToLoad - (optional) the relationships to load
79425
80473
  * @returns {Promise<boolean>} - true if successful, false otherwise
79426
80474
  * @public
79427
80475
  * @async
79428
- * @memberof MJPublicLinkEntity
80476
+ * @memberof MJProcessRunEntity
80477
+ * @method
80478
+ * @override
80479
+ */
80480
+ async Load(ID, EntityRelationshipsToLoad) {
80481
+ const compositeKey = new CompositeKey();
80482
+ compositeKey.KeyValuePairs.push({ FieldName: 'ID', Value: ID });
80483
+ return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
80484
+ }
80485
+ /**
80486
+ * * Field Name: ID
80487
+ * * Display Name: ID
80488
+ * * SQL Data Type: uniqueidentifier
80489
+ * * Default Value: newsequentialid()
80490
+ */
80491
+ get ID() {
80492
+ return this.Get('ID');
80493
+ }
80494
+ set ID(value) {
80495
+ this.Set('ID', value);
80496
+ }
80497
+ /**
80498
+ * * Field Name: RecordProcessID
80499
+ * * Display Name: Record Process
80500
+ * * SQL Data Type: uniqueidentifier
80501
+ * * Related Entity/Foreign Key: MJ: Record Processes (vwRecordProcesses.ID)
80502
+ * * Description: Foreign key to the Record Process that spawned this run; NULL for ad-hoc / engine-driven runs not tied to a saved definition
80503
+ */
80504
+ get RecordProcessID() {
80505
+ return this.Get('RecordProcessID');
80506
+ }
80507
+ set RecordProcessID(value) {
80508
+ this.Set('RecordProcessID', value);
80509
+ }
80510
+ /**
80511
+ * * Field Name: EntityID
80512
+ * * Display Name: Entity
80513
+ * * SQL Data Type: uniqueidentifier
80514
+ * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)
80515
+ * * Description: Foreign key to the entity processed by this run, when the run is entity-scoped
80516
+ */
80517
+ get EntityID() {
80518
+ return this.Get('EntityID');
80519
+ }
80520
+ set EntityID(value) {
80521
+ this.Set('EntityID', value);
80522
+ }
80523
+ /**
80524
+ * * Field Name: TriggeredBy
80525
+ * * Display Name: Triggered By
80526
+ * * SQL Data Type: nvarchar(20)
80527
+ * * Value List Type: List
80528
+ * * Possible Values
80529
+ * * Manual
80530
+ * * OnChange
80531
+ * * OnDemand
80532
+ * * Schedule
80533
+ * * Description: What triggered this run: OnChange, Schedule, OnDemand, or Manual
80534
+ */
80535
+ get TriggeredBy() {
80536
+ return this.Get('TriggeredBy');
80537
+ }
80538
+ set TriggeredBy(value) {
80539
+ this.Set('TriggeredBy', value);
80540
+ }
80541
+ /**
80542
+ * * Field Name: SourceType
80543
+ * * Display Name: Source Type
80544
+ * * SQL Data Type: nvarchar(20)
80545
+ * * Value List Type: List
80546
+ * * Possible Values
80547
+ * * Array
80548
+ * * Filter
80549
+ * * Keyset
80550
+ * * List
80551
+ * * SingleRecord
80552
+ * * View
80553
+ * * Description: The kind of record-set source resolved for this run: View, List, Filter, Array, Keyset, or SingleRecord
80554
+ */
80555
+ get SourceType() {
80556
+ return this.Get('SourceType');
80557
+ }
80558
+ set SourceType(value) {
80559
+ this.Set('SourceType', value);
80560
+ }
80561
+ /**
80562
+ * * Field Name: SourceID
80563
+ * * Display Name: Source ID
80564
+ * * SQL Data Type: uniqueidentifier
80565
+ * * Description: Polymorphic source identifier (e.g., ViewID or ListID) when applicable; no FK because it spans entities
80566
+ */
80567
+ get SourceID() {
80568
+ return this.Get('SourceID');
80569
+ }
80570
+ set SourceID(value) {
80571
+ this.Set('SourceID', value);
80572
+ }
80573
+ /**
80574
+ * * Field Name: SourceFilter
80575
+ * * Display Name: Source Filter
80576
+ * * SQL Data Type: nvarchar(MAX)
80577
+ * * Description: Resolved filter snapshot used to materialize the record set for this run
80578
+ */
80579
+ get SourceFilter() {
80580
+ return this.Get('SourceFilter');
80581
+ }
80582
+ set SourceFilter(value) {
80583
+ this.Set('SourceFilter', value);
80584
+ }
80585
+ /**
80586
+ * * Field Name: ScheduledJobRunID
80587
+ * * Display Name: Scheduled Job Run
80588
+ * * SQL Data Type: uniqueidentifier
80589
+ * * Related Entity/Foreign Key: MJ: Scheduled Job Runs (vwScheduledJobRuns.ID)
80590
+ * * Description: Foreign key to the Scheduled Job Run that launched this run, when scheduler-launched
80591
+ */
80592
+ get ScheduledJobRunID() {
80593
+ return this.Get('ScheduledJobRunID');
80594
+ }
80595
+ set ScheduledJobRunID(value) {
80596
+ this.Set('ScheduledJobRunID', value);
80597
+ }
80598
+ /**
80599
+ * * Field Name: Status
80600
+ * * Display Name: Status
80601
+ * * SQL Data Type: nvarchar(20)
80602
+ * * Default Value: Pending
80603
+ * * Value List Type: List
80604
+ * * Possible Values
80605
+ * * Cancelled
80606
+ * * Completed
80607
+ * * Failed
80608
+ * * Paused
80609
+ * * Pending
80610
+ * * Running
80611
+ * * Description: Run status: Pending, Running, Paused, Completed, Failed, or Cancelled
80612
+ */
80613
+ get Status() {
80614
+ return this.Get('Status');
80615
+ }
80616
+ set Status(value) {
80617
+ this.Set('Status', value);
80618
+ }
80619
+ /**
80620
+ * * Field Name: StartTime
80621
+ * * Display Name: Start Time
80622
+ * * SQL Data Type: datetimeoffset
80623
+ * * Description: When the run started
80624
+ */
80625
+ get StartTime() {
80626
+ return this.Get('StartTime');
80627
+ }
80628
+ set StartTime(value) {
80629
+ this.Set('StartTime', value);
80630
+ }
80631
+ /**
80632
+ * * Field Name: EndTime
80633
+ * * Display Name: End Time
80634
+ * * SQL Data Type: datetimeoffset
80635
+ * * Description: When the run ended
80636
+ */
80637
+ get EndTime() {
80638
+ return this.Get('EndTime');
80639
+ }
80640
+ set EndTime(value) {
80641
+ this.Set('EndTime', value);
80642
+ }
80643
+ /**
80644
+ * * Field Name: TotalItemCount
80645
+ * * Display Name: Total Item Count
80646
+ * * SQL Data Type: int
80647
+ * * Description: Estimated or known total number of records to process
80648
+ */
80649
+ get TotalItemCount() {
80650
+ return this.Get('TotalItemCount');
80651
+ }
80652
+ set TotalItemCount(value) {
80653
+ this.Set('TotalItemCount', value);
80654
+ }
80655
+ /**
80656
+ * * Field Name: ProcessedItems
80657
+ * * Display Name: Processed Items
80658
+ * * SQL Data Type: int
80659
+ * * Default Value: 0
80660
+ * * Description: Count of records processed so far
80661
+ */
80662
+ get ProcessedItems() {
80663
+ return this.Get('ProcessedItems');
80664
+ }
80665
+ set ProcessedItems(value) {
80666
+ this.Set('ProcessedItems', value);
80667
+ }
80668
+ /**
80669
+ * * Field Name: SuccessCount
80670
+ * * Display Name: Success Count
80671
+ * * SQL Data Type: int
80672
+ * * Default Value: 0
80673
+ * * Description: Count of records processed successfully
80674
+ */
80675
+ get SuccessCount() {
80676
+ return this.Get('SuccessCount');
80677
+ }
80678
+ set SuccessCount(value) {
80679
+ this.Set('SuccessCount', value);
80680
+ }
80681
+ /**
80682
+ * * Field Name: ErrorCount
80683
+ * * Display Name: Error Count
80684
+ * * SQL Data Type: int
80685
+ * * Default Value: 0
80686
+ * * Description: Count of records that failed processing
80687
+ */
80688
+ get ErrorCount() {
80689
+ return this.Get('ErrorCount');
80690
+ }
80691
+ set ErrorCount(value) {
80692
+ this.Set('ErrorCount', value);
80693
+ }
80694
+ /**
80695
+ * * Field Name: SkippedCount
80696
+ * * Display Name: Skipped Count
80697
+ * * SQL Data Type: int
80698
+ * * Default Value: 0
80699
+ * * Description: Count of records skipped (e.g., unchanged per watermark)
80700
+ */
80701
+ get SkippedCount() {
80702
+ return this.Get('SkippedCount');
80703
+ }
80704
+ set SkippedCount(value) {
80705
+ this.Set('SkippedCount', value);
80706
+ }
80707
+ /**
80708
+ * * Field Name: LastProcessedOffset
80709
+ * * Display Name: Last Processed Offset
80710
+ * * SQL Data Type: int
80711
+ * * Description: Offset-based resume cursor (StartRow) for sources that paginate by offset
80712
+ */
80713
+ get LastProcessedOffset() {
80714
+ return this.Get('LastProcessedOffset');
80715
+ }
80716
+ set LastProcessedOffset(value) {
80717
+ this.Set('LastProcessedOffset', value);
80718
+ }
80719
+ /**
80720
+ * * Field Name: LastProcessedKey
80721
+ * * Display Name: Last Processed Key
80722
+ * * SQL Data Type: nvarchar(450)
80723
+ * * Description: Keyset-based resume cursor (AfterKey) for sources that paginate by seek
80724
+ */
80725
+ get LastProcessedKey() {
80726
+ return this.Get('LastProcessedKey');
80727
+ }
80728
+ set LastProcessedKey(value) {
80729
+ this.Set('LastProcessedKey', value);
80730
+ }
80731
+ /**
80732
+ * * Field Name: BatchSize
80733
+ * * Display Name: Batch Size
80734
+ * * SQL Data Type: int
80735
+ * * Description: Effective batch size for this run
80736
+ */
80737
+ get BatchSize() {
80738
+ return this.Get('BatchSize');
80739
+ }
80740
+ set BatchSize(value) {
80741
+ this.Set('BatchSize', value);
80742
+ }
80743
+ /**
80744
+ * * Field Name: CancellationRequested
80745
+ * * Display Name: Cancellation Requested
80746
+ * * SQL Data Type: bit
80747
+ * * Default Value: 0
80748
+ * * Description: Pause/cancel handshake flag honored by the processor between batches
80749
+ */
80750
+ get CancellationRequested() {
80751
+ return this.Get('CancellationRequested');
80752
+ }
80753
+ set CancellationRequested(value) {
80754
+ this.Set('CancellationRequested', value);
80755
+ }
80756
+ /**
80757
+ * * Field Name: Configuration
80758
+ * * Display Name: Configuration
80759
+ * * SQL Data Type: nvarchar(MAX)
80760
+ * * Description: JSON snapshot of the effective configuration for this run
80761
+ */
80762
+ get Configuration() {
80763
+ return this.Get('Configuration');
80764
+ }
80765
+ set Configuration(value) {
80766
+ this.Set('Configuration', value);
80767
+ }
80768
+ /**
80769
+ * * Field Name: ErrorMessage
80770
+ * * Display Name: Error Message
80771
+ * * SQL Data Type: nvarchar(MAX)
80772
+ * * Description: Run-level error message when Status=Failed
80773
+ */
80774
+ get ErrorMessage() {
80775
+ return this.Get('ErrorMessage');
80776
+ }
80777
+ set ErrorMessage(value) {
80778
+ this.Set('ErrorMessage', value);
80779
+ }
80780
+ /**
80781
+ * * Field Name: StartedByUserID
80782
+ * * Display Name: Started By User
80783
+ * * SQL Data Type: uniqueidentifier
80784
+ * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)
80785
+ * * Description: Foreign key to the user who started the run
80786
+ */
80787
+ get StartedByUserID() {
80788
+ return this.Get('StartedByUserID');
80789
+ }
80790
+ set StartedByUserID(value) {
80791
+ this.Set('StartedByUserID', value);
80792
+ }
80793
+ /**
80794
+ * * Field Name: __mj_CreatedAt
80795
+ * * Display Name: Created At
80796
+ * * SQL Data Type: datetimeoffset
80797
+ * * Default Value: getutcdate()
80798
+ */
80799
+ get __mj_CreatedAt() {
80800
+ return this.Get('__mj_CreatedAt');
80801
+ }
80802
+ /**
80803
+ * * Field Name: __mj_UpdatedAt
80804
+ * * Display Name: Updated At
80805
+ * * SQL Data Type: datetimeoffset
80806
+ * * Default Value: getutcdate()
80807
+ */
80808
+ get __mj_UpdatedAt() {
80809
+ return this.Get('__mj_UpdatedAt');
80810
+ }
80811
+ /**
80812
+ * * Field Name: RecordProcess
80813
+ * * Display Name: Record Process Name
80814
+ * * SQL Data Type: nvarchar(255)
80815
+ */
80816
+ get RecordProcess() {
80817
+ return this.Get('RecordProcess');
80818
+ }
80819
+ /**
80820
+ * * Field Name: Entity
80821
+ * * Display Name: Entity Name
80822
+ * * SQL Data Type: nvarchar(255)
80823
+ */
80824
+ get Entity() {
80825
+ return this.Get('Entity');
80826
+ }
80827
+ /**
80828
+ * * Field Name: ScheduledJobRun
80829
+ * * Display Name: Scheduled Job Run Name
80830
+ * * SQL Data Type: nvarchar(200)
80831
+ */
80832
+ get ScheduledJobRun() {
80833
+ return this.Get('ScheduledJobRun');
80834
+ }
80835
+ /**
80836
+ * * Field Name: StartedByUser
80837
+ * * Display Name: Started By User Name
80838
+ * * SQL Data Type: nvarchar(100)
80839
+ */
80840
+ get StartedByUser() {
80841
+ return this.Get('StartedByUser');
80842
+ }
80843
+ };
80844
+ MJProcessRunEntity = __decorate([
80845
+ RegisterClass(BaseEntity, 'MJ: Process Runs')
80846
+ ], MJProcessRunEntity);
80847
+ export { MJProcessRunEntity };
80848
+ /**
80849
+ * MJ: Projects - strongly typed entity sub-class
80850
+ * * Schema: __mj
80851
+ * * Base Table: Project
80852
+ * * Base View: vwProjects
80853
+ * * @description Container for grouping related conversations around a common topic, client, or initiative. Supports nesting for sub-projects.
80854
+ * * Primary Key: ID
80855
+ * @extends {BaseEntity}
80856
+ * @class
80857
+ * @public
80858
+ */
80859
+ let MJProjectEntity = class MJProjectEntity extends BaseEntity {
80860
+ /**
80861
+ * Loads the MJ: Projects record from the database
80862
+ * @param ID: string - primary key value to load the MJ: Projects record.
80863
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
80864
+ * @returns {Promise<boolean>} - true if successful, false otherwise
80865
+ * @public
80866
+ * @async
80867
+ * @memberof MJProjectEntity
80868
+ * @method
80869
+ * @override
80870
+ */
80871
+ async Load(ID, EntityRelationshipsToLoad) {
80872
+ const compositeKey = new CompositeKey();
80873
+ compositeKey.KeyValuePairs.push({ FieldName: 'ID', Value: ID });
80874
+ return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
80875
+ }
80876
+ /**
80877
+ * * Field Name: ID
80878
+ * * Display Name: ID
80879
+ * * SQL Data Type: uniqueidentifier
80880
+ * * Default Value: newsequentialid()
80881
+ */
80882
+ get ID() {
80883
+ return this.Get('ID');
80884
+ }
80885
+ set ID(value) {
80886
+ this.Set('ID', value);
80887
+ }
80888
+ /**
80889
+ * * Field Name: EnvironmentID
80890
+ * * Display Name: Environment ID
80891
+ * * SQL Data Type: uniqueidentifier
80892
+ * * Related Entity/Foreign Key: MJ: Environments (vwEnvironments.ID)
80893
+ * * Default Value: F51358F3-9447-4176-B313-BF8025FD8D09
80894
+ */
80895
+ get EnvironmentID() {
80896
+ return this.Get('EnvironmentID');
80897
+ }
80898
+ set EnvironmentID(value) {
80899
+ this.Set('EnvironmentID', value);
80900
+ }
80901
+ /**
80902
+ * * Field Name: ParentID
80903
+ * * Display Name: Parent ID
80904
+ * * SQL Data Type: uniqueidentifier
80905
+ * * Related Entity/Foreign Key: MJ: Projects (vwProjects.ID)
80906
+ */
80907
+ get ParentID() {
80908
+ return this.Get('ParentID');
80909
+ }
80910
+ set ParentID(value) {
80911
+ this.Set('ParentID', value);
80912
+ }
80913
+ /**
80914
+ * * Field Name: Name
80915
+ * * Display Name: Name
80916
+ * * SQL Data Type: nvarchar(255)
80917
+ * * Description: Display name for the project
80918
+ */
80919
+ get Name() {
80920
+ return this.Get('Name');
80921
+ }
80922
+ set Name(value) {
80923
+ this.Set('Name', value);
80924
+ }
80925
+ /**
80926
+ * * Field Name: Description
80927
+ * * Display Name: Description
80928
+ * * SQL Data Type: nvarchar(MAX)
80929
+ * * Description: Detailed description of the project goals and scope
80930
+ */
80931
+ get Description() {
80932
+ return this.Get('Description');
80933
+ }
80934
+ set Description(value) {
80935
+ this.Set('Description', value);
80936
+ }
80937
+ /**
80938
+ * * Field Name: Color
80939
+ * * Display Name: Color
80940
+ * * SQL Data Type: nvarchar(7)
80941
+ * * Description: Hex color code for project badges in UI (#RRGGBB format)
80942
+ */
80943
+ get Color() {
80944
+ return this.Get('Color');
80945
+ }
80946
+ set Color(value) {
80947
+ this.Set('Color', value);
80948
+ }
80949
+ /**
80950
+ * * Field Name: Icon
80951
+ * * Display Name: Icon
80952
+ * * SQL Data Type: nvarchar(50)
80953
+ * * Description: Font Awesome icon class for UI display
80954
+ */
80955
+ get Icon() {
80956
+ return this.Get('Icon');
80957
+ }
80958
+ set Icon(value) {
80959
+ this.Set('Icon', value);
80960
+ }
80961
+ /**
80962
+ * * Field Name: IsArchived
80963
+ * * Display Name: Is Archived
80964
+ * * SQL Data Type: bit
80965
+ * * Default Value: 0
80966
+ * * Description: Indicates if this project is archived and should be hidden from active lists
80967
+ */
80968
+ get IsArchived() {
80969
+ return this.Get('IsArchived');
80970
+ }
80971
+ set IsArchived(value) {
80972
+ this.Set('IsArchived', value);
80973
+ }
80974
+ /**
80975
+ * * Field Name: __mj_CreatedAt
80976
+ * * Display Name: Created At
80977
+ * * SQL Data Type: datetimeoffset
80978
+ * * Default Value: getutcdate()
80979
+ */
80980
+ get __mj_CreatedAt() {
80981
+ return this.Get('__mj_CreatedAt');
80982
+ }
80983
+ /**
80984
+ * * Field Name: __mj_UpdatedAt
80985
+ * * Display Name: Updated At
80986
+ * * SQL Data Type: datetimeoffset
80987
+ * * Default Value: getutcdate()
80988
+ */
80989
+ get __mj_UpdatedAt() {
80990
+ return this.Get('__mj_UpdatedAt');
80991
+ }
80992
+ /**
80993
+ * * Field Name: Environment
80994
+ * * Display Name: Environment
80995
+ * * SQL Data Type: nvarchar(255)
80996
+ */
80997
+ get Environment() {
80998
+ return this.Get('Environment');
80999
+ }
81000
+ /**
81001
+ * * Field Name: Parent
81002
+ * * Display Name: Parent
81003
+ * * SQL Data Type: nvarchar(255)
81004
+ */
81005
+ get Parent() {
81006
+ return this.Get('Parent');
81007
+ }
81008
+ /**
81009
+ * * Field Name: RootParentID
81010
+ * * Display Name: Root Parent ID
81011
+ * * SQL Data Type: uniqueidentifier
81012
+ */
81013
+ get RootParentID() {
81014
+ return this.Get('RootParentID');
81015
+ }
81016
+ };
81017
+ MJProjectEntity = __decorate([
81018
+ RegisterClass(BaseEntity, 'MJ: Projects')
81019
+ ], MJProjectEntity);
81020
+ export { MJProjectEntity };
81021
+ /**
81022
+ * MJ: Public Links - strongly typed entity sub-class
81023
+ * * Schema: __mj
81024
+ * * Base Table: PublicLink
81025
+ * * Base View: vwPublicLinks
81026
+ * * @description Shareable links for external access to artifacts and other resources. Supports password protection and expiration.
81027
+ * * Primary Key: ID
81028
+ * @extends {BaseEntity}
81029
+ * @class
81030
+ * @public
81031
+ */
81032
+ let MJPublicLinkEntity = class MJPublicLinkEntity extends BaseEntity {
81033
+ /**
81034
+ * Loads the MJ: Public Links record from the database
81035
+ * @param ID: string - primary key value to load the MJ: Public Links record.
81036
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
81037
+ * @returns {Promise<boolean>} - true if successful, false otherwise
81038
+ * @public
81039
+ * @async
81040
+ * @memberof MJPublicLinkEntity
79429
81041
  * @method
79430
81042
  * @override
79431
81043
  */
@@ -83442,6 +85054,1235 @@ MJRecordMergeLogEntity = __decorate([
83442
85054
  RegisterClass(BaseEntity, 'MJ: Record Merge Logs')
83443
85055
  ], MJRecordMergeLogEntity);
83444
85056
  export { MJRecordMergeLogEntity };
85057
+ /**
85058
+ * MJ: Record Process Categories - strongly typed entity sub-class
85059
+ * * Schema: __mj
85060
+ * * Base Table: RecordProcessCategory
85061
+ * * Base View: vwRecordProcessCategories
85062
+ * * @description Hierarchical folder for organizing Record Processes in the UI. Example: "Customer Lifecycle" with a child category "Retention".
85063
+ * * Primary Key: ID
85064
+ * @extends {BaseEntity}
85065
+ * @class
85066
+ * @public
85067
+ */
85068
+ let MJRecordProcessCategoryEntity = class MJRecordProcessCategoryEntity extends BaseEntity {
85069
+ /**
85070
+ * Loads the MJ: Record Process Categories record from the database
85071
+ * @param ID: string - primary key value to load the MJ: Record Process Categories record.
85072
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
85073
+ * @returns {Promise<boolean>} - true if successful, false otherwise
85074
+ * @public
85075
+ * @async
85076
+ * @memberof MJRecordProcessCategoryEntity
85077
+ * @method
85078
+ * @override
85079
+ */
85080
+ async Load(ID, EntityRelationshipsToLoad) {
85081
+ const compositeKey = new CompositeKey();
85082
+ compositeKey.KeyValuePairs.push({ FieldName: 'ID', Value: ID });
85083
+ return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
85084
+ }
85085
+ /**
85086
+ * * Field Name: ID
85087
+ * * Display Name: ID
85088
+ * * SQL Data Type: uniqueidentifier
85089
+ * * Default Value: newsequentialid()
85090
+ */
85091
+ get ID() {
85092
+ return this.Get('ID');
85093
+ }
85094
+ set ID(value) {
85095
+ this.Set('ID', value);
85096
+ }
85097
+ /**
85098
+ * * Field Name: Name
85099
+ * * Display Name: Name
85100
+ * * SQL Data Type: nvarchar(255)
85101
+ * * Description: Display name of the category
85102
+ */
85103
+ get Name() {
85104
+ return this.Get('Name');
85105
+ }
85106
+ set Name(value) {
85107
+ this.Set('Name', value);
85108
+ }
85109
+ /**
85110
+ * * Field Name: Description
85111
+ * * Display Name: Description
85112
+ * * SQL Data Type: nvarchar(MAX)
85113
+ * * Description: Optional description of what belongs in this category
85114
+ */
85115
+ get Description() {
85116
+ return this.Get('Description');
85117
+ }
85118
+ set Description(value) {
85119
+ this.Set('Description', value);
85120
+ }
85121
+ /**
85122
+ * * Field Name: ParentID
85123
+ * * Display Name: Parent Category
85124
+ * * SQL Data Type: uniqueidentifier
85125
+ * * Related Entity/Foreign Key: MJ: Record Process Categories (vwRecordProcessCategories.ID)
85126
+ * * Description: Self-referencing foreign key to the parent category, enabling a nested folder hierarchy (NULL for a top-level category)
85127
+ */
85128
+ get ParentID() {
85129
+ return this.Get('ParentID');
85130
+ }
85131
+ set ParentID(value) {
85132
+ this.Set('ParentID', value);
85133
+ }
85134
+ /**
85135
+ * * Field Name: __mj_CreatedAt
85136
+ * * Display Name: Created At
85137
+ * * SQL Data Type: datetimeoffset
85138
+ * * Default Value: getutcdate()
85139
+ */
85140
+ get __mj_CreatedAt() {
85141
+ return this.Get('__mj_CreatedAt');
85142
+ }
85143
+ /**
85144
+ * * Field Name: __mj_UpdatedAt
85145
+ * * Display Name: Updated At
85146
+ * * SQL Data Type: datetimeoffset
85147
+ * * Default Value: getutcdate()
85148
+ */
85149
+ get __mj_UpdatedAt() {
85150
+ return this.Get('__mj_UpdatedAt');
85151
+ }
85152
+ /**
85153
+ * * Field Name: Parent
85154
+ * * Display Name: Parent Name
85155
+ * * SQL Data Type: nvarchar(255)
85156
+ */
85157
+ get Parent() {
85158
+ return this.Get('Parent');
85159
+ }
85160
+ /**
85161
+ * * Field Name: RootParentID
85162
+ * * Display Name: Root Parent
85163
+ * * SQL Data Type: uniqueidentifier
85164
+ */
85165
+ get RootParentID() {
85166
+ return this.Get('RootParentID');
85167
+ }
85168
+ };
85169
+ MJRecordProcessCategoryEntity = __decorate([
85170
+ RegisterClass(BaseEntity, 'MJ: Record Process Categories')
85171
+ ], MJRecordProcessCategoryEntity);
85172
+ export { MJRecordProcessCategoryEntity };
85173
+ /**
85174
+ * MJ: Record Process Watermarks - strongly typed entity sub-class
85175
+ * * Schema: __mj
85176
+ * * Base Table: RecordProcessWatermark
85177
+ * * Base View: vwRecordProcessWatermarks
85178
+ * * @description Per-record change-detection watermark backing WatermarkStrategy=Checksum. Stores the last content hash a Record Process processed for a given record so unchanged records are skipped on the next run. Only used by Checksum mode; UpdatedAt mode compares __mj_UpdatedAt and stores nothing here.
85179
+ * * Primary Key: ID
85180
+ * @extends {BaseEntity}
85181
+ * @class
85182
+ * @public
85183
+ */
85184
+ let MJRecordProcessWatermarkEntity = class MJRecordProcessWatermarkEntity extends BaseEntity {
85185
+ /**
85186
+ * Loads the MJ: Record Process Watermarks record from the database
85187
+ * @param ID: string - primary key value to load the MJ: Record Process Watermarks record.
85188
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
85189
+ * @returns {Promise<boolean>} - true if successful, false otherwise
85190
+ * @public
85191
+ * @async
85192
+ * @memberof MJRecordProcessWatermarkEntity
85193
+ * @method
85194
+ * @override
85195
+ */
85196
+ async Load(ID, EntityRelationshipsToLoad) {
85197
+ const compositeKey = new CompositeKey();
85198
+ compositeKey.KeyValuePairs.push({ FieldName: 'ID', Value: ID });
85199
+ return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
85200
+ }
85201
+ /**
85202
+ * * Field Name: ID
85203
+ * * Display Name: ID
85204
+ * * SQL Data Type: uniqueidentifier
85205
+ * * Default Value: newsequentialid()
85206
+ */
85207
+ get ID() {
85208
+ return this.Get('ID');
85209
+ }
85210
+ set ID(value) {
85211
+ this.Set('ID', value);
85212
+ }
85213
+ /**
85214
+ * * Field Name: RecordProcessID
85215
+ * * Display Name: Record Process
85216
+ * * SQL Data Type: uniqueidentifier
85217
+ * * Related Entity/Foreign Key: MJ: Record Processes (vwRecordProcesses.ID)
85218
+ * * Description: Foreign key to the Record Process this watermark belongs to
85219
+ */
85220
+ get RecordProcessID() {
85221
+ return this.Get('RecordProcessID');
85222
+ }
85223
+ set RecordProcessID(value) {
85224
+ this.Set('RecordProcessID', value);
85225
+ }
85226
+ /**
85227
+ * * Field Name: EntityID
85228
+ * * Display Name: Entity
85229
+ * * SQL Data Type: uniqueidentifier
85230
+ * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)
85231
+ * * Description: Foreign key to the entity of the watermarked record
85232
+ */
85233
+ get EntityID() {
85234
+ return this.Get('EntityID');
85235
+ }
85236
+ set EntityID(value) {
85237
+ this.Set('EntityID', value);
85238
+ }
85239
+ /**
85240
+ * * Field Name: RecordID
85241
+ * * Display Name: Record ID
85242
+ * * SQL Data Type: nvarchar(450)
85243
+ * * Description: Primary key of the watermarked record, stored as text to remain composite-key safe
85244
+ */
85245
+ get RecordID() {
85246
+ return this.Get('RecordID');
85247
+ }
85248
+ set RecordID(value) {
85249
+ this.Set('RecordID', value);
85250
+ }
85251
+ /**
85252
+ * * Field Name: Hash
85253
+ * * Display Name: Content Hash
85254
+ * * SQL Data Type: nvarchar(128)
85255
+ * * Description: Content hash of the record as of the last time it was processed by this Record Process
85256
+ */
85257
+ get Hash() {
85258
+ return this.Get('Hash');
85259
+ }
85260
+ set Hash(value) {
85261
+ this.Set('Hash', value);
85262
+ }
85263
+ /**
85264
+ * * Field Name: LastProcessedAt
85265
+ * * Display Name: Last Processed At
85266
+ * * SQL Data Type: datetimeoffset
85267
+ * * Description: When this record was last processed by this Record Process
85268
+ */
85269
+ get LastProcessedAt() {
85270
+ return this.Get('LastProcessedAt');
85271
+ }
85272
+ set LastProcessedAt(value) {
85273
+ this.Set('LastProcessedAt', value);
85274
+ }
85275
+ /**
85276
+ * * Field Name: __mj_CreatedAt
85277
+ * * Display Name: Created At
85278
+ * * SQL Data Type: datetimeoffset
85279
+ * * Default Value: getutcdate()
85280
+ */
85281
+ get __mj_CreatedAt() {
85282
+ return this.Get('__mj_CreatedAt');
85283
+ }
85284
+ /**
85285
+ * * Field Name: __mj_UpdatedAt
85286
+ * * Display Name: Updated At
85287
+ * * SQL Data Type: datetimeoffset
85288
+ * * Default Value: getutcdate()
85289
+ */
85290
+ get __mj_UpdatedAt() {
85291
+ return this.Get('__mj_UpdatedAt');
85292
+ }
85293
+ /**
85294
+ * * Field Name: RecordProcess
85295
+ * * Display Name: Record Process Name
85296
+ * * SQL Data Type: nvarchar(255)
85297
+ */
85298
+ get RecordProcess() {
85299
+ return this.Get('RecordProcess');
85300
+ }
85301
+ /**
85302
+ * * Field Name: Entity
85303
+ * * Display Name: Entity Name
85304
+ * * SQL Data Type: nvarchar(255)
85305
+ */
85306
+ get Entity() {
85307
+ return this.Get('Entity');
85308
+ }
85309
+ };
85310
+ MJRecordProcessWatermarkEntity = __decorate([
85311
+ RegisterClass(BaseEntity, 'MJ: Record Process Watermarks')
85312
+ ], MJRecordProcessWatermarkEntity);
85313
+ export { MJRecordProcessWatermarkEntity };
85314
+ /**
85315
+ * MJ: Record Processes - strongly typed entity sub-class
85316
+ * * Schema: __mj
85317
+ * * Base Table: RecordProcess
85318
+ * * Base View: vwRecordProcesses
85319
+ * * @description A declarative, reusable job definition that binds three axes of a business process: WORK (an Action or an Agent) x SCOPE (a single record, a User View, a List, or an ad-hoc Filter) x TRIGGER (on-change save hooks, a cron schedule, and/or on demand). One row is one configured process; each execution of it produces a Process Run with per-record Process Run Details. EXAMPLE: a "Weekly Customer Health Summary" row runs the "Customer Summarizer" agent over the "Active Customers" view every Saturday 2am, also whenever a customer's NPS/support fields change, and on demand; for each customer it infers {satisfaction, sentiment, personalityStyle, summary} and writes satisfaction/sentiment back onto the Customer plus a summary into a Customer Insights child row, skipping customers unchanged since the last run.
85320
+ * * Primary Key: ID
85321
+ * @extends {BaseEntity}
85322
+ * @class
85323
+ * @public
85324
+ */
85325
+ let MJRecordProcessEntity = class MJRecordProcessEntity extends BaseEntity {
85326
+ /**
85327
+ * Loads the MJ: Record Processes record from the database
85328
+ * @param ID: string - primary key value to load the MJ: Record Processes record.
85329
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
85330
+ * @returns {Promise<boolean>} - true if successful, false otherwise
85331
+ * @public
85332
+ * @async
85333
+ * @memberof MJRecordProcessEntity
85334
+ * @method
85335
+ * @override
85336
+ */
85337
+ async Load(ID, EntityRelationshipsToLoad) {
85338
+ const compositeKey = new CompositeKey();
85339
+ compositeKey.KeyValuePairs.push({ FieldName: 'ID', Value: ID });
85340
+ return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
85341
+ }
85342
+ /**
85343
+ * * Field Name: ID
85344
+ * * Display Name: ID
85345
+ * * SQL Data Type: uniqueidentifier
85346
+ * * Default Value: newsequentialid()
85347
+ */
85348
+ get ID() {
85349
+ return this.Get('ID');
85350
+ }
85351
+ set ID(value) {
85352
+ this.Set('ID', value);
85353
+ }
85354
+ /**
85355
+ * * Field Name: Name
85356
+ * * Display Name: Name
85357
+ * * SQL Data Type: nvarchar(255)
85358
+ * * Description: Human-readable name of the process definition (e.g., "Weekly Customer Health Summary")
85359
+ */
85360
+ get Name() {
85361
+ return this.Get('Name');
85362
+ }
85363
+ set Name(value) {
85364
+ this.Set('Name', value);
85365
+ }
85366
+ /**
85367
+ * * Field Name: Description
85368
+ * * Display Name: Description
85369
+ * * SQL Data Type: nvarchar(MAX)
85370
+ * * Description: Optional description of what this process does
85371
+ */
85372
+ get Description() {
85373
+ return this.Get('Description');
85374
+ }
85375
+ set Description(value) {
85376
+ this.Set('Description', value);
85377
+ }
85378
+ /**
85379
+ * * Field Name: CategoryID
85380
+ * * Display Name: Category
85381
+ * * SQL Data Type: uniqueidentifier
85382
+ * * Related Entity/Foreign Key: MJ: Record Process Categories (vwRecordProcessCategories.ID)
85383
+ * * Description: Optional hierarchical category for organizing this process in the UI
85384
+ */
85385
+ get CategoryID() {
85386
+ return this.Get('CategoryID');
85387
+ }
85388
+ set CategoryID(value) {
85389
+ this.Set('CategoryID', value);
85390
+ }
85391
+ /**
85392
+ * * Field Name: EntityID
85393
+ * * Display Name: Entity
85394
+ * * SQL Data Type: uniqueidentifier
85395
+ * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)
85396
+ * * Description: Foreign key to the target entity whose records this process operates on
85397
+ */
85398
+ get EntityID() {
85399
+ return this.Get('EntityID');
85400
+ }
85401
+ set EntityID(value) {
85402
+ this.Set('EntityID', value);
85403
+ }
85404
+ /**
85405
+ * * Field Name: Status
85406
+ * * Display Name: Status
85407
+ * * SQL Data Type: nvarchar(20)
85408
+ * * Default Value: Draft
85409
+ * * Value List Type: List
85410
+ * * Possible Values
85411
+ * * Active
85412
+ * * Disabled
85413
+ * * Draft
85414
+ * * Description: Lifecycle status: Draft (not yet wired), Active (triggers live), or Disabled
85415
+ */
85416
+ get Status() {
85417
+ return this.Get('Status');
85418
+ }
85419
+ set Status(value) {
85420
+ this.Set('Status', value);
85421
+ }
85422
+ /**
85423
+ * * Field Name: WorkType
85424
+ * * Display Name: Work Type
85425
+ * * SQL Data Type: nvarchar(20)
85426
+ * * Value List Type: List
85427
+ * * Possible Values
85428
+ * * Action
85429
+ * * Agent
85430
+ * * Infer
85431
+ * * Description: Whether the work is an Action, an Agent, or an Infer (per-record AI Prompt). Agents are dispatched through the Execute Agent action and must be top-level + ExposeAsAction; Infer runs the AI Prompt named by PromptID for each record and writes its structured output back via OutputMapping.
85432
+ */
85433
+ get WorkType() {
85434
+ return this.Get('WorkType');
85435
+ }
85436
+ set WorkType(value) {
85437
+ this.Set('WorkType', value);
85438
+ }
85439
+ /**
85440
+ * * Field Name: ActionID
85441
+ * * Display Name: Action
85442
+ * * SQL Data Type: uniqueidentifier
85443
+ * * Related Entity/Foreign Key: MJ: Actions (vwActions.ID)
85444
+ * * Description: Foreign key to the Action to run, when WorkType=Action
85445
+ */
85446
+ get ActionID() {
85447
+ return this.Get('ActionID');
85448
+ }
85449
+ set ActionID(value) {
85450
+ this.Set('ActionID', value);
85451
+ }
85452
+ /**
85453
+ * * Field Name: AgentID
85454
+ * * Display Name: Agent
85455
+ * * SQL Data Type: uniqueidentifier
85456
+ * * Related Entity/Foreign Key: MJ: AI Agents (vwAIAgents.ID)
85457
+ * * Description: Foreign key to the AI Agent to run, when WorkType=Agent
85458
+ */
85459
+ get AgentID() {
85460
+ return this.Get('AgentID');
85461
+ }
85462
+ set AgentID(value) {
85463
+ this.Set('AgentID', value);
85464
+ }
85465
+ /**
85466
+ * * Field Name: PromptID
85467
+ * * Display Name: Prompt
85468
+ * * SQL Data Type: uniqueidentifier
85469
+ * * Related Entity/Foreign Key: MJ: AI Prompts (vwAIPrompts.ID)
85470
+ * * Description: Foreign key to the AI Prompt to run for each record, when WorkType=Infer. The prompt's structured output is written back to the data model via OutputMapping.
85471
+ */
85472
+ get PromptID() {
85473
+ return this.Get('PromptID');
85474
+ }
85475
+ set PromptID(value) {
85476
+ this.Set('PromptID', value);
85477
+ }
85478
+ /**
85479
+ * * Field Name: ScopeType
85480
+ * * Display Name: Scope Type
85481
+ * * SQL Data Type: nvarchar(20)
85482
+ * * Value List Type: List
85483
+ * * Possible Values
85484
+ * * Filter
85485
+ * * List
85486
+ * * SingleRecord
85487
+ * * View
85488
+ * * Description: How the record set is scoped for the Schedule and On-Demand triggers: SingleRecord, View, List, or Filter. The On-Change trigger is always single-record and ignores this.
85489
+ */
85490
+ get ScopeType() {
85491
+ return this.Get('ScopeType');
85492
+ }
85493
+ set ScopeType(value) {
85494
+ this.Set('ScopeType', value);
85495
+ }
85496
+ /**
85497
+ * * Field Name: ScopeViewID
85498
+ * * Display Name: Scope View
85499
+ * * SQL Data Type: uniqueidentifier
85500
+ * * Related Entity/Foreign Key: MJ: User Views (vwUserViews.ID)
85501
+ * * Description: Foreign key to the User View defining the scope, when ScopeType=View
85502
+ */
85503
+ get ScopeViewID() {
85504
+ return this.Get('ScopeViewID');
85505
+ }
85506
+ set ScopeViewID(value) {
85507
+ this.Set('ScopeViewID', value);
85508
+ }
85509
+ /**
85510
+ * * Field Name: ScopeListID
85511
+ * * Display Name: Scope List
85512
+ * * SQL Data Type: uniqueidentifier
85513
+ * * Related Entity/Foreign Key: MJ: Lists (vwLists.ID)
85514
+ * * Description: Foreign key to the List defining the scope, when ScopeType=List
85515
+ */
85516
+ get ScopeListID() {
85517
+ return this.Get('ScopeListID');
85518
+ }
85519
+ set ScopeListID(value) {
85520
+ this.Set('ScopeListID', value);
85521
+ }
85522
+ /**
85523
+ * * Field Name: ScopeFilter
85524
+ * * Display Name: Scope Filter
85525
+ * * SQL Data Type: nvarchar(MAX)
85526
+ * * Description: Ad-hoc WHERE clause used to resolve the record set, when ScopeType=Filter
85527
+ */
85528
+ get ScopeFilter() {
85529
+ return this.Get('ScopeFilter');
85530
+ }
85531
+ set ScopeFilter(value) {
85532
+ this.Set('ScopeFilter', value);
85533
+ }
85534
+ /**
85535
+ * * Field Name: OnChangeEnabled
85536
+ * * Display Name: On-Change Enabled
85537
+ * * SQL Data Type: bit
85538
+ * * Default Value: 0
85539
+ * * Description: When 1, the process runs per-record on save via an owned Entity Action
85540
+ */
85541
+ get OnChangeEnabled() {
85542
+ return this.Get('OnChangeEnabled');
85543
+ }
85544
+ set OnChangeEnabled(value) {
85545
+ this.Set('OnChangeEnabled', value);
85546
+ }
85547
+ /**
85548
+ * * Field Name: OnChangeInvocationType
85549
+ * * Display Name: On-Change Invocation Type
85550
+ * * SQL Data Type: nvarchar(30)
85551
+ * * Value List Type: List
85552
+ * * Possible Values
85553
+ * * AfterCreate
85554
+ * * AfterDelete
85555
+ * * AfterUpdate
85556
+ * * Validate
85557
+ * * Description: Which save event fires the on-change trigger: AfterCreate, AfterUpdate, AfterDelete, or Validate
85558
+ */
85559
+ get OnChangeInvocationType() {
85560
+ return this.Get('OnChangeInvocationType');
85561
+ }
85562
+ set OnChangeInvocationType(value) {
85563
+ this.Set('OnChangeInvocationType', value);
85564
+ }
85565
+ /**
85566
+ * * Field Name: OnChangeFilter
85567
+ * * Display Name: On-Change Filter
85568
+ * * SQL Data Type: nvarchar(MAX)
85569
+ * * Description: Gating expression evaluated against the changed record (with changed-fields context) that compiles into the owned Entity Action Filter; only when it passes does the on-change trigger fire
85570
+ */
85571
+ get OnChangeFilter() {
85572
+ return this.Get('OnChangeFilter');
85573
+ }
85574
+ set OnChangeFilter(value) {
85575
+ this.Set('OnChangeFilter', value);
85576
+ }
85577
+ /**
85578
+ * * Field Name: ScheduleEnabled
85579
+ * * Display Name: Schedule Enabled
85580
+ * * SQL Data Type: bit
85581
+ * * Default Value: 0
85582
+ * * Description: When 1, the process runs on a cron schedule via an owned Scheduled Job
85583
+ */
85584
+ get ScheduleEnabled() {
85585
+ return this.Get('ScheduleEnabled');
85586
+ }
85587
+ set ScheduleEnabled(value) {
85588
+ this.Set('ScheduleEnabled', value);
85589
+ }
85590
+ /**
85591
+ * * Field Name: CronExpression
85592
+ * * Display Name: Cron Expression
85593
+ * * SQL Data Type: nvarchar(120)
85594
+ * * Description: Cron expression for the schedule trigger, when ScheduleEnabled=1
85595
+ */
85596
+ get CronExpression() {
85597
+ return this.Get('CronExpression');
85598
+ }
85599
+ set CronExpression(value) {
85600
+ this.Set('CronExpression', value);
85601
+ }
85602
+ /**
85603
+ * * Field Name: Timezone
85604
+ * * Display Name: Timezone
85605
+ * * SQL Data Type: nvarchar(100)
85606
+ * * Default Value: UTC
85607
+ * * Description: IANA timezone for evaluating the cron expression (default UTC)
85608
+ */
85609
+ get Timezone() {
85610
+ return this.Get('Timezone');
85611
+ }
85612
+ set Timezone(value) {
85613
+ this.Set('Timezone', value);
85614
+ }
85615
+ /**
85616
+ * * Field Name: OnDemandEnabled
85617
+ * * Display Name: On-Demand Enabled
85618
+ * * SQL Data Type: bit
85619
+ * * Default Value: 1
85620
+ * * Description: When 1, the process can be run on demand (button / resolver)
85621
+ */
85622
+ get OnDemandEnabled() {
85623
+ return this.Get('OnDemandEnabled');
85624
+ }
85625
+ set OnDemandEnabled(value) {
85626
+ this.Set('OnDemandEnabled', value);
85627
+ }
85628
+ /**
85629
+ * * Field Name: InputMapping
85630
+ * * Display Name: Input Mapping
85631
+ * * SQL Data Type: nvarchar(MAX)
85632
+ * * Description: JSON mapping describing how a record maps to the work inputs (optionally including an EntityDocumentID for render-to-text)
85633
+ */
85634
+ get InputMapping() {
85635
+ return this.Get('InputMapping');
85636
+ }
85637
+ set InputMapping(value) {
85638
+ this.Set('InputMapping', value);
85639
+ }
85640
+ /**
85641
+ * * Field Name: OutputMapping
85642
+ * * Display Name: Output Mapping
85643
+ * * SQL Data Type: nvarchar(MAX)
85644
+ * * Description: JSON mapping describing how the structured output payload writes back (to fields, a child record, or tags)
85645
+ */
85646
+ get OutputMapping() {
85647
+ return this.Get('OutputMapping');
85648
+ }
85649
+ set OutputMapping(value) {
85650
+ this.Set('OutputMapping', value);
85651
+ }
85652
+ /**
85653
+ * * Field Name: SkipUnchanged
85654
+ * * Display Name: Skip Unchanged
85655
+ * * SQL Data Type: bit
85656
+ * * Default Value: 1
85657
+ * * Description: When 1, records whose watermark indicates no change since the last run are skipped
85658
+ */
85659
+ get SkipUnchanged() {
85660
+ return this.Get('SkipUnchanged');
85661
+ }
85662
+ set SkipUnchanged(value) {
85663
+ this.Set('SkipUnchanged', value);
85664
+ }
85665
+ /**
85666
+ * * Field Name: WatermarkStrategy
85667
+ * * Display Name: Watermark Strategy
85668
+ * * SQL Data Type: nvarchar(20)
85669
+ * * Value List Type: List
85670
+ * * Possible Values
85671
+ * * Checksum
85672
+ * * None
85673
+ * * UpdatedAt
85674
+ * * Description: How unchanged records are detected for SkipUnchanged: Checksum (per-record content hash, stored in RecordProcessWatermark), UpdatedAt (compares __mj_UpdatedAt, stores nothing), or None
85675
+ */
85676
+ get WatermarkStrategy() {
85677
+ return this.Get('WatermarkStrategy');
85678
+ }
85679
+ set WatermarkStrategy(value) {
85680
+ this.Set('WatermarkStrategy', value);
85681
+ }
85682
+ /**
85683
+ * * Field Name: BatchSize
85684
+ * * Display Name: Batch Size
85685
+ * * SQL Data Type: int
85686
+ * * Default Value: 100
85687
+ * * Description: Number of records processed per batch (default 100)
85688
+ */
85689
+ get BatchSize() {
85690
+ return this.Get('BatchSize');
85691
+ }
85692
+ set BatchSize(value) {
85693
+ this.Set('BatchSize', value);
85694
+ }
85695
+ /**
85696
+ * * Field Name: MaxConcurrency
85697
+ * * Display Name: Max Concurrency
85698
+ * * SQL Data Type: int
85699
+ * * Default Value: 1
85700
+ * * Description: Maximum number of records processed concurrently within a batch (default 1)
85701
+ */
85702
+ get MaxConcurrency() {
85703
+ return this.Get('MaxConcurrency');
85704
+ }
85705
+ set MaxConcurrency(value) {
85706
+ this.Set('MaxConcurrency', value);
85707
+ }
85708
+ /**
85709
+ * * Field Name: __mj_CreatedAt
85710
+ * * Display Name: Created At
85711
+ * * SQL Data Type: datetimeoffset
85712
+ * * Default Value: getutcdate()
85713
+ */
85714
+ get __mj_CreatedAt() {
85715
+ return this.Get('__mj_CreatedAt');
85716
+ }
85717
+ /**
85718
+ * * Field Name: __mj_UpdatedAt
85719
+ * * Display Name: Updated At
85720
+ * * SQL Data Type: datetimeoffset
85721
+ * * Default Value: getutcdate()
85722
+ */
85723
+ get __mj_UpdatedAt() {
85724
+ return this.Get('__mj_UpdatedAt');
85725
+ }
85726
+ /**
85727
+ * * Field Name: Category
85728
+ * * Display Name: Category (Display)
85729
+ * * SQL Data Type: nvarchar(255)
85730
+ */
85731
+ get Category() {
85732
+ return this.Get('Category');
85733
+ }
85734
+ /**
85735
+ * * Field Name: Entity
85736
+ * * Display Name: Entity (Display)
85737
+ * * SQL Data Type: nvarchar(255)
85738
+ */
85739
+ get Entity() {
85740
+ return this.Get('Entity');
85741
+ }
85742
+ /**
85743
+ * * Field Name: Action
85744
+ * * Display Name: Action (Display)
85745
+ * * SQL Data Type: nvarchar(425)
85746
+ */
85747
+ get Action() {
85748
+ return this.Get('Action');
85749
+ }
85750
+ /**
85751
+ * * Field Name: Agent
85752
+ * * Display Name: Agent (Display)
85753
+ * * SQL Data Type: nvarchar(255)
85754
+ */
85755
+ get Agent() {
85756
+ return this.Get('Agent');
85757
+ }
85758
+ /**
85759
+ * * Field Name: Prompt
85760
+ * * Display Name: Prompt (Display)
85761
+ * * SQL Data Type: nvarchar(255)
85762
+ */
85763
+ get Prompt() {
85764
+ return this.Get('Prompt');
85765
+ }
85766
+ /**
85767
+ * * Field Name: ScopeView
85768
+ * * Display Name: Scope View (Display)
85769
+ * * SQL Data Type: nvarchar(100)
85770
+ */
85771
+ get ScopeView() {
85772
+ return this.Get('ScopeView');
85773
+ }
85774
+ /**
85775
+ * * Field Name: ScopeList
85776
+ * * Display Name: Scope List (Display)
85777
+ * * SQL Data Type: nvarchar(100)
85778
+ */
85779
+ get ScopeList() {
85780
+ return this.Get('ScopeList');
85781
+ }
85782
+ };
85783
+ MJRecordProcessEntity = __decorate([
85784
+ RegisterClass(BaseEntity, 'MJ: Record Processes')
85785
+ ], MJRecordProcessEntity);
85786
+ export { MJRecordProcessEntity };
85787
+ /**
85788
+ * MJ: Remote Operation Categories - strongly typed entity sub-class
85789
+ * * Schema: __mj
85790
+ * * Base Table: RemoteOperationCategory
85791
+ * * Base View: vwRemoteOperationCategories
85792
+ * * @description Hierarchical folder for organizing Remote Operations in the UI. Example: "Record Processes" with a child category "Control" holding RunNow / Pause / Cancel.
85793
+ * * Primary Key: ID
85794
+ * @extends {BaseEntity}
85795
+ * @class
85796
+ * @public
85797
+ */
85798
+ let MJRemoteOperationCategoryEntity = class MJRemoteOperationCategoryEntity extends BaseEntity {
85799
+ /**
85800
+ * Loads the MJ: Remote Operation Categories record from the database
85801
+ * @param ID: string - primary key value to load the MJ: Remote Operation Categories record.
85802
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
85803
+ * @returns {Promise<boolean>} - true if successful, false otherwise
85804
+ * @public
85805
+ * @async
85806
+ * @memberof MJRemoteOperationCategoryEntity
85807
+ * @method
85808
+ * @override
85809
+ */
85810
+ async Load(ID, EntityRelationshipsToLoad) {
85811
+ const compositeKey = new CompositeKey();
85812
+ compositeKey.KeyValuePairs.push({ FieldName: 'ID', Value: ID });
85813
+ return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
85814
+ }
85815
+ /**
85816
+ * * Field Name: ID
85817
+ * * Display Name: ID
85818
+ * * SQL Data Type: uniqueidentifier
85819
+ * * Default Value: newsequentialid()
85820
+ */
85821
+ get ID() {
85822
+ return this.Get('ID');
85823
+ }
85824
+ set ID(value) {
85825
+ this.Set('ID', value);
85826
+ }
85827
+ /**
85828
+ * * Field Name: Name
85829
+ * * Display Name: Name
85830
+ * * SQL Data Type: nvarchar(255)
85831
+ * * Description: Display name of the category
85832
+ */
85833
+ get Name() {
85834
+ return this.Get('Name');
85835
+ }
85836
+ set Name(value) {
85837
+ this.Set('Name', value);
85838
+ }
85839
+ /**
85840
+ * * Field Name: Description
85841
+ * * Display Name: Description
85842
+ * * SQL Data Type: nvarchar(MAX)
85843
+ * * Description: Optional description of what belongs in this category
85844
+ */
85845
+ get Description() {
85846
+ return this.Get('Description');
85847
+ }
85848
+ set Description(value) {
85849
+ this.Set('Description', value);
85850
+ }
85851
+ /**
85852
+ * * Field Name: ParentID
85853
+ * * Display Name: Parent Category
85854
+ * * SQL Data Type: uniqueidentifier
85855
+ * * Related Entity/Foreign Key: MJ: Remote Operation Categories (vwRemoteOperationCategories.ID)
85856
+ * * Description: Self-referencing foreign key to the parent category, enabling a nested folder hierarchy (NULL for a top-level category)
85857
+ */
85858
+ get ParentID() {
85859
+ return this.Get('ParentID');
85860
+ }
85861
+ set ParentID(value) {
85862
+ this.Set('ParentID', value);
85863
+ }
85864
+ /**
85865
+ * * Field Name: __mj_CreatedAt
85866
+ * * Display Name: Created At
85867
+ * * SQL Data Type: datetimeoffset
85868
+ * * Default Value: getutcdate()
85869
+ */
85870
+ get __mj_CreatedAt() {
85871
+ return this.Get('__mj_CreatedAt');
85872
+ }
85873
+ /**
85874
+ * * Field Name: __mj_UpdatedAt
85875
+ * * Display Name: Updated At
85876
+ * * SQL Data Type: datetimeoffset
85877
+ * * Default Value: getutcdate()
85878
+ */
85879
+ get __mj_UpdatedAt() {
85880
+ return this.Get('__mj_UpdatedAt');
85881
+ }
85882
+ /**
85883
+ * * Field Name: Parent
85884
+ * * Display Name: Parent Name
85885
+ * * SQL Data Type: nvarchar(255)
85886
+ */
85887
+ get Parent() {
85888
+ return this.Get('Parent');
85889
+ }
85890
+ /**
85891
+ * * Field Name: RootParentID
85892
+ * * Display Name: Root Parent
85893
+ * * SQL Data Type: uniqueidentifier
85894
+ */
85895
+ get RootParentID() {
85896
+ return this.Get('RootParentID');
85897
+ }
85898
+ };
85899
+ MJRemoteOperationCategoryEntity = __decorate([
85900
+ RegisterClass(BaseEntity, 'MJ: Remote Operation Categories')
85901
+ ], MJRemoteOperationCategoryEntity);
85902
+ export { MJRemoteOperationCategoryEntity };
85903
+ /**
85904
+ * MJ: Remote Operations - strongly typed entity sub-class
85905
+ * * Schema: __mj
85906
+ * * Base Table: RemoteOperation
85907
+ * * Base View: vwRemoteOperations
85908
+ * * @description Definition of a typed, provider-routed server operation invoked identically from the client (marshalled over GraphQL) and the server (dispatched in-process) - the typed peer of BaseEntity (CRUD) and RunView (set reads) for arbitrary capabilities. Input/output types are declared here and emitted by CodeGen into a typed base class; the body may be hand-written or AI-authored from Description. EXAMPLE: "RecordProcess.RunNow" (ExecutionMode=LongRunning) takes {recordProcessID} and returns {processRunID}, authorized by the recordprocess:execute scope plus the caller's entity permissions.
85909
+ * * Primary Key: ID
85910
+ * @extends {BaseEntity}
85911
+ * @class
85912
+ * @public
85913
+ */
85914
+ let MJRemoteOperationEntity = class MJRemoteOperationEntity extends BaseEntity {
85915
+ /**
85916
+ * Loads the MJ: Remote Operations record from the database
85917
+ * @param ID: string - primary key value to load the MJ: Remote Operations record.
85918
+ * @param EntityRelationshipsToLoad - (optional) the relationships to load
85919
+ * @returns {Promise<boolean>} - true if successful, false otherwise
85920
+ * @public
85921
+ * @async
85922
+ * @memberof MJRemoteOperationEntity
85923
+ * @method
85924
+ * @override
85925
+ */
85926
+ async Load(ID, EntityRelationshipsToLoad) {
85927
+ const compositeKey = new CompositeKey();
85928
+ compositeKey.KeyValuePairs.push({ FieldName: 'ID', Value: ID });
85929
+ return await super.InnerLoad(compositeKey, EntityRelationshipsToLoad);
85930
+ }
85931
+ /**
85932
+ * * Field Name: ID
85933
+ * * Display Name: ID
85934
+ * * SQL Data Type: uniqueidentifier
85935
+ * * Default Value: newsequentialid()
85936
+ */
85937
+ get ID() {
85938
+ return this.Get('ID');
85939
+ }
85940
+ set ID(value) {
85941
+ this.Set('ID', value);
85942
+ }
85943
+ /**
85944
+ * * Field Name: Name
85945
+ * * Display Name: Name
85946
+ * * SQL Data Type: nvarchar(255)
85947
+ * * Description: Human-readable name of the operation
85948
+ */
85949
+ get Name() {
85950
+ return this.Get('Name');
85951
+ }
85952
+ set Name(value) {
85953
+ this.Set('Name', value);
85954
+ }
85955
+ /**
85956
+ * * Field Name: OperationKey
85957
+ * * Display Name: Operation Key
85958
+ * * SQL Data Type: nvarchar(255)
85959
+ * * Description: Stable, unique registry key and wire token used to dispatch the operation (e.g., "RecordProcess.RunNow"). Namespaced by convention.
85960
+ */
85961
+ get OperationKey() {
85962
+ return this.Get('OperationKey');
85963
+ }
85964
+ set OperationKey(value) {
85965
+ this.Set('OperationKey', value);
85966
+ }
85967
+ /**
85968
+ * * Field Name: CategoryID
85969
+ * * Display Name: Category
85970
+ * * SQL Data Type: uniqueidentifier
85971
+ * * Related Entity/Foreign Key: MJ: Remote Operation Categories (vwRemoteOperationCategories.ID)
85972
+ * * Description: Optional hierarchical category for organizing this operation in the UI
85973
+ */
85974
+ get CategoryID() {
85975
+ return this.Get('CategoryID');
85976
+ }
85977
+ set CategoryID(value) {
85978
+ this.Set('CategoryID', value);
85979
+ }
85980
+ /**
85981
+ * * Field Name: Description
85982
+ * * Display Name: Description
85983
+ * * SQL Data Type: nvarchar(MAX)
85984
+ * * Description: Human description of the operation; also the seed for AI-generated implementation code when GenerationType=AI
85985
+ */
85986
+ get Description() {
85987
+ return this.Get('Description');
85988
+ }
85989
+ set Description(value) {
85990
+ this.Set('Description', value);
85991
+ }
85992
+ /**
85993
+ * * Field Name: InputTypeName
85994
+ * * Display Name: Input Type Name
85995
+ * * SQL Data Type: nvarchar(255)
85996
+ * * Description: TypeScript type name for the operation input (emitted by CodeGen as the TInput interface)
85997
+ */
85998
+ get InputTypeName() {
85999
+ return this.Get('InputTypeName');
86000
+ }
86001
+ set InputTypeName(value) {
86002
+ this.Set('InputTypeName', value);
86003
+ }
86004
+ /**
86005
+ * * Field Name: InputTypeDefinition
86006
+ * * Display Name: Input Type Definition
86007
+ * * SQL Data Type: nvarchar(MAX)
86008
+ * * Description: Raw TypeScript interface/type source defining the input shape (same mechanism as EntityField JSON-type definitions)
86009
+ */
86010
+ get InputTypeDefinition() {
86011
+ return this.Get('InputTypeDefinition');
86012
+ }
86013
+ set InputTypeDefinition(value) {
86014
+ this.Set('InputTypeDefinition', value);
86015
+ }
86016
+ /**
86017
+ * * Field Name: InputTypeIsArray
86018
+ * * Display Name: Is Input Array
86019
+ * * SQL Data Type: bit
86020
+ * * Default Value: 0
86021
+ * * Description: When 1, the input type is emitted as an array (TInput[])
86022
+ */
86023
+ get InputTypeIsArray() {
86024
+ return this.Get('InputTypeIsArray');
86025
+ }
86026
+ set InputTypeIsArray(value) {
86027
+ this.Set('InputTypeIsArray', value);
86028
+ }
86029
+ /**
86030
+ * * Field Name: OutputTypeName
86031
+ * * Display Name: Output Type Name
86032
+ * * SQL Data Type: nvarchar(255)
86033
+ * * Description: TypeScript type name for the operation output (emitted by CodeGen as the TOutput interface)
86034
+ */
86035
+ get OutputTypeName() {
86036
+ return this.Get('OutputTypeName');
86037
+ }
86038
+ set OutputTypeName(value) {
86039
+ this.Set('OutputTypeName', value);
86040
+ }
86041
+ /**
86042
+ * * Field Name: OutputTypeDefinition
86043
+ * * Display Name: Output Type Definition
86044
+ * * SQL Data Type: nvarchar(MAX)
86045
+ * * Description: Raw TypeScript interface/type source defining the output shape
86046
+ */
86047
+ get OutputTypeDefinition() {
86048
+ return this.Get('OutputTypeDefinition');
86049
+ }
86050
+ set OutputTypeDefinition(value) {
86051
+ this.Set('OutputTypeDefinition', value);
86052
+ }
86053
+ /**
86054
+ * * Field Name: OutputTypeIsArray
86055
+ * * Display Name: Is Output Array
86056
+ * * SQL Data Type: bit
86057
+ * * Default Value: 0
86058
+ * * Description: When 1, the output type is emitted as an array (TOutput[])
86059
+ */
86060
+ get OutputTypeIsArray() {
86061
+ return this.Get('OutputTypeIsArray');
86062
+ }
86063
+ set OutputTypeIsArray(value) {
86064
+ this.Set('OutputTypeIsArray', value);
86065
+ }
86066
+ /**
86067
+ * * Field Name: ExecutionMode
86068
+ * * Display Name: Execution Mode
86069
+ * * SQL Data Type: nvarchar(20)
86070
+ * * Default Value: Sync
86071
+ * * Value List Type: List
86072
+ * * Possible Values
86073
+ * * LongRunning
86074
+ * * Sync
86075
+ * * Description: Sync (request/response) or LongRunning (returns a handle; supports detached and attached consumption)
86076
+ */
86077
+ get ExecutionMode() {
86078
+ return this.Get('ExecutionMode');
86079
+ }
86080
+ set ExecutionMode(value) {
86081
+ this.Set('ExecutionMode', value);
86082
+ }
86083
+ /**
86084
+ * * Field Name: RequiredScope
86085
+ * * Display Name: Required Scope
86086
+ * * SQL Data Type: nvarchar(255)
86087
+ * * Description: Optional API-key scope string (e.g., recordprocess:execute) enforced for API-key/MCP callers; NULL means no scope gate (interactive users are still bounded by their entity permissions)
86088
+ */
86089
+ get RequiredScope() {
86090
+ return this.Get('RequiredScope');
86091
+ }
86092
+ set RequiredScope(value) {
86093
+ this.Set('RequiredScope', value);
86094
+ }
86095
+ /**
86096
+ * * Field Name: RequiresSystemUser
86097
+ * * Display Name: Requires System User
86098
+ * * SQL Data Type: bit
86099
+ * * Default Value: 0
86100
+ * * Description: When 1, only the system user may invoke this operation
86101
+ */
86102
+ get RequiresSystemUser() {
86103
+ return this.Get('RequiresSystemUser');
86104
+ }
86105
+ set RequiresSystemUser(value) {
86106
+ this.Set('RequiresSystemUser', value);
86107
+ }
86108
+ /**
86109
+ * * Field Name: GenerationType
86110
+ * * Display Name: Generation Type
86111
+ * * SQL Data Type: nvarchar(20)
86112
+ * * Default Value: Manual
86113
+ * * Value List Type: List
86114
+ * * Possible Values
86115
+ * * AI
86116
+ * * Default
86117
+ * * Manual
86118
+ * * Description: How the server implementation is provided: Manual (hand-written subclass), AI (generated from Description), or Default (standard generated plumbing)
86119
+ */
86120
+ get GenerationType() {
86121
+ return this.Get('GenerationType');
86122
+ }
86123
+ set GenerationType(value) {
86124
+ this.Set('GenerationType', value);
86125
+ }
86126
+ /**
86127
+ * * Field Name: Code
86128
+ * * Display Name: Implementation Code
86129
+ * * SQL Data Type: nvarchar(MAX)
86130
+ * * Description: The AI-generated implementation body (when GenerationType=AI); regenerated only when Description changes
86131
+ */
86132
+ get Code() {
86133
+ return this.Get('Code');
86134
+ }
86135
+ set Code(value) {
86136
+ this.Set('Code', value);
86137
+ }
86138
+ /**
86139
+ * * Field Name: CodeApprovalStatus
86140
+ * * Display Name: Approval Status
86141
+ * * SQL Data Type: nvarchar(20)
86142
+ * * Default Value: Pending
86143
+ * * Value List Type: List
86144
+ * * Possible Values
86145
+ * * Approved
86146
+ * * Pending
86147
+ * * Rejected
86148
+ * * Description: Human approval gate for AI-generated code: Pending, Approved, or Rejected. Only Approved AI code is emitted and routable.
86149
+ */
86150
+ get CodeApprovalStatus() {
86151
+ return this.Get('CodeApprovalStatus');
86152
+ }
86153
+ set CodeApprovalStatus(value) {
86154
+ this.Set('CodeApprovalStatus', value);
86155
+ }
86156
+ /**
86157
+ * * Field Name: CodeApprovedByUserID
86158
+ * * Display Name: Approved By User ID
86159
+ * * SQL Data Type: uniqueidentifier
86160
+ * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)
86161
+ * * Description: Foreign key to the user who approved the generated code
86162
+ */
86163
+ get CodeApprovedByUserID() {
86164
+ return this.Get('CodeApprovedByUserID');
86165
+ }
86166
+ set CodeApprovedByUserID(value) {
86167
+ this.Set('CodeApprovedByUserID', value);
86168
+ }
86169
+ /**
86170
+ * * Field Name: CodeApprovedAt
86171
+ * * Display Name: Approved At
86172
+ * * SQL Data Type: datetimeoffset
86173
+ * * Description: When the generated code was approved
86174
+ */
86175
+ get CodeApprovedAt() {
86176
+ return this.Get('CodeApprovedAt');
86177
+ }
86178
+ set CodeApprovedAt(value) {
86179
+ this.Set('CodeApprovedAt', value);
86180
+ }
86181
+ /**
86182
+ * * Field Name: ContractFingerprint
86183
+ * * Display Name: Contract Fingerprint
86184
+ * * SQL Data Type: nvarchar(100)
86185
+ * * Description: Fingerprint of the input/output contract; carried in the wire envelope so the server can reject a stale client loudly instead of mis-deserializing
86186
+ */
86187
+ get ContractFingerprint() {
86188
+ return this.Get('ContractFingerprint');
86189
+ }
86190
+ set ContractFingerprint(value) {
86191
+ this.Set('ContractFingerprint', value);
86192
+ }
86193
+ /**
86194
+ * * Field Name: Status
86195
+ * * Display Name: Status
86196
+ * * SQL Data Type: nvarchar(20)
86197
+ * * Default Value: Pending
86198
+ * * Value List Type: List
86199
+ * * Possible Values
86200
+ * * Active
86201
+ * * Disabled
86202
+ * * Pending
86203
+ * * Description: Lifecycle status: Active (routable), Disabled, or Pending. Only Active operations can be invoked.
86204
+ */
86205
+ get Status() {
86206
+ return this.Get('Status');
86207
+ }
86208
+ set Status(value) {
86209
+ this.Set('Status', value);
86210
+ }
86211
+ /**
86212
+ * * Field Name: CacheTTLSeconds
86213
+ * * Display Name: Cache TTL (Seconds)
86214
+ * * SQL Data Type: int
86215
+ * * Description: Optional result cache TTL in seconds (NULL = no caching)
86216
+ */
86217
+ get CacheTTLSeconds() {
86218
+ return this.Get('CacheTTLSeconds');
86219
+ }
86220
+ set CacheTTLSeconds(value) {
86221
+ this.Set('CacheTTLSeconds', value);
86222
+ }
86223
+ /**
86224
+ * * Field Name: TimeoutMS
86225
+ * * Display Name: Timeout (MS)
86226
+ * * SQL Data Type: int
86227
+ * * Description: Optional execution timeout in milliseconds
86228
+ */
86229
+ get TimeoutMS() {
86230
+ return this.Get('TimeoutMS');
86231
+ }
86232
+ set TimeoutMS(value) {
86233
+ this.Set('TimeoutMS', value);
86234
+ }
86235
+ /**
86236
+ * * Field Name: MaxConcurrency
86237
+ * * Display Name: Max Concurrency
86238
+ * * SQL Data Type: int
86239
+ * * Description: Optional cap on concurrent executions of this operation
86240
+ */
86241
+ get MaxConcurrency() {
86242
+ return this.Get('MaxConcurrency');
86243
+ }
86244
+ set MaxConcurrency(value) {
86245
+ this.Set('MaxConcurrency', value);
86246
+ }
86247
+ /**
86248
+ * * Field Name: __mj_CreatedAt
86249
+ * * Display Name: Created At
86250
+ * * SQL Data Type: datetimeoffset
86251
+ * * Default Value: getutcdate()
86252
+ */
86253
+ get __mj_CreatedAt() {
86254
+ return this.Get('__mj_CreatedAt');
86255
+ }
86256
+ /**
86257
+ * * Field Name: __mj_UpdatedAt
86258
+ * * Display Name: Updated At
86259
+ * * SQL Data Type: datetimeoffset
86260
+ * * Default Value: getutcdate()
86261
+ */
86262
+ get __mj_UpdatedAt() {
86263
+ return this.Get('__mj_UpdatedAt');
86264
+ }
86265
+ /**
86266
+ * * Field Name: Category
86267
+ * * Display Name: Category Name
86268
+ * * SQL Data Type: nvarchar(255)
86269
+ */
86270
+ get Category() {
86271
+ return this.Get('Category');
86272
+ }
86273
+ /**
86274
+ * * Field Name: CodeApprovedByUser
86275
+ * * Display Name: Approved By User
86276
+ * * SQL Data Type: nvarchar(100)
86277
+ */
86278
+ get CodeApprovedByUser() {
86279
+ return this.Get('CodeApprovedByUser');
86280
+ }
86281
+ };
86282
+ MJRemoteOperationEntity = __decorate([
86283
+ RegisterClass(BaseEntity, 'MJ: Remote Operations')
86284
+ ], MJRemoteOperationEntity);
86285
+ export { MJRemoteOperationEntity };
83445
86286
  /**
83446
86287
  * MJ: Report Categories - strongly typed entity sub-class
83447
86288
  * * Schema: __mj