@memberjunction/server 5.34.1 → 5.35.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/server",
3
- "version": "5.34.1",
3
+ "version": "5.35.0",
4
4
  "description": "MemberJunction: This project provides API access via GraphQL to the common data store.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./src/index.ts",
@@ -27,73 +27,73 @@
27
27
  "@as-integrations/express5": "^1.0.0",
28
28
  "@graphql-tools/schema": "latest",
29
29
  "@graphql-tools/utils": "^11.0.0",
30
- "@memberjunction/actions": "5.34.1",
31
- "@memberjunction/actions-apollo": "5.34.1",
32
- "@memberjunction/actions-base": "5.34.1",
33
- "@memberjunction/actions-bizapps-accounting": "5.34.1",
34
- "@memberjunction/actions-bizapps-crm": "5.34.1",
35
- "@memberjunction/actions-bizapps-formbuilders": "5.34.1",
36
- "@memberjunction/actions-bizapps-lms": "5.34.1",
37
- "@memberjunction/actions-bizapps-social": "5.34.1",
38
- "@memberjunction/ai": "5.34.1",
39
- "@memberjunction/ai-agent-manager": "5.34.1",
40
- "@memberjunction/ai-agent-manager-actions": "5.34.1",
41
- "@memberjunction/ai-agents": "5.34.1",
42
- "@memberjunction/ai-core-plus": "5.34.1",
43
- "@memberjunction/ai-mcp-client": "5.34.1",
44
- "@memberjunction/ai-prompts": "5.34.1",
45
- "@memberjunction/ai-provider-bundle": "5.34.1",
46
- "@memberjunction/ai-vector-sync": "5.34.1",
47
- "@memberjunction/ai-vectordb": "5.34.1",
48
- "@memberjunction/ai-vectors-pinecone": "5.34.1",
49
- "@memberjunction/aiengine": "5.34.1",
50
- "@memberjunction/api-keys": "5.34.1",
51
- "@memberjunction/auth-providers": "5.34.1",
52
- "@memberjunction/codegen-lib": "5.34.1",
53
- "@memberjunction/communication-ms-graph": "5.34.1",
54
- "@memberjunction/communication-sendgrid": "5.34.1",
55
- "@memberjunction/communication-types": "5.34.1",
56
- "@memberjunction/component-registry-client-sdk": "5.34.1",
57
- "@memberjunction/computer-use-engine": "5.34.1",
58
- "@memberjunction/config": "5.34.1",
59
- "@memberjunction/core": "5.34.1",
60
- "@memberjunction/core-actions": "5.34.1",
61
- "@memberjunction/core-entities": "5.34.1",
62
- "@memberjunction/core-entities-server": "5.34.1",
63
- "@memberjunction/data-context": "5.34.1",
64
- "@memberjunction/data-context-server": "5.34.1",
65
- "@memberjunction/doc-utils": "5.34.1",
66
- "@memberjunction/encryption": "5.34.1",
67
- "@memberjunction/entity-communications-base": "5.34.1",
68
- "@memberjunction/entity-communications-server": "5.34.1",
69
- "@memberjunction/external-change-detection": "5.34.1",
70
- "@memberjunction/generic-database-provider": "5.34.1",
71
- "@memberjunction/global": "5.34.1",
72
- "@memberjunction/graphql-dataprovider": "5.34.1",
73
- "@memberjunction/integration-engine": "5.34.1",
74
- "@memberjunction/integration-schema-builder": "5.34.1",
75
- "@memberjunction/interactive-component-types": "5.34.1",
76
- "@memberjunction/notifications": "5.34.1",
77
- "@memberjunction/postgresql-dataprovider": "5.34.1",
78
- "@memberjunction/queue": "5.34.1",
79
- "@memberjunction/redis-provider": "5.34.1",
80
- "@memberjunction/scheduling-actions": "5.34.1",
81
- "@memberjunction/scheduling-base-types": "5.34.1",
82
- "@memberjunction/scheduling-engine": "5.34.1",
83
- "@memberjunction/scheduling-engine-base": "5.34.1",
84
- "@memberjunction/schema-engine": "5.34.1",
85
- "@memberjunction/search-engine": "5.34.1",
86
- "@memberjunction/server-extensions-core": "5.34.1",
87
- "@memberjunction/skip-types": "5.34.1",
88
- "@memberjunction/sql-dialect": "5.34.1",
89
- "@memberjunction/sqlserver-dataprovider": "5.34.1",
90
- "@memberjunction/storage": "5.34.1",
91
- "@memberjunction/tag-engine": "5.34.1",
92
- "@memberjunction/tag-engine-base": "5.34.1",
93
- "@memberjunction/templates": "5.34.1",
94
- "@memberjunction/testing-engine": "5.34.1",
95
- "@memberjunction/testing-engine-base": "5.34.1",
96
- "@memberjunction/version-history": "5.34.1",
30
+ "@memberjunction/actions": "5.35.0",
31
+ "@memberjunction/actions-apollo": "5.35.0",
32
+ "@memberjunction/actions-base": "5.35.0",
33
+ "@memberjunction/actions-bizapps-accounting": "5.35.0",
34
+ "@memberjunction/actions-bizapps-crm": "5.35.0",
35
+ "@memberjunction/actions-bizapps-formbuilders": "5.35.0",
36
+ "@memberjunction/actions-bizapps-lms": "5.35.0",
37
+ "@memberjunction/actions-bizapps-social": "5.35.0",
38
+ "@memberjunction/ai": "5.35.0",
39
+ "@memberjunction/ai-agent-manager": "5.35.0",
40
+ "@memberjunction/ai-agent-manager-actions": "5.35.0",
41
+ "@memberjunction/ai-agents": "5.35.0",
42
+ "@memberjunction/ai-core-plus": "5.35.0",
43
+ "@memberjunction/ai-mcp-client": "5.35.0",
44
+ "@memberjunction/ai-prompts": "5.35.0",
45
+ "@memberjunction/ai-provider-bundle": "5.35.0",
46
+ "@memberjunction/ai-vector-sync": "5.35.0",
47
+ "@memberjunction/ai-vectordb": "5.35.0",
48
+ "@memberjunction/ai-vectors-pinecone": "5.35.0",
49
+ "@memberjunction/aiengine": "5.35.0",
50
+ "@memberjunction/api-keys": "5.35.0",
51
+ "@memberjunction/auth-providers": "5.35.0",
52
+ "@memberjunction/codegen-lib": "5.35.0",
53
+ "@memberjunction/communication-ms-graph": "5.35.0",
54
+ "@memberjunction/communication-sendgrid": "5.35.0",
55
+ "@memberjunction/communication-types": "5.35.0",
56
+ "@memberjunction/component-registry-client-sdk": "5.35.0",
57
+ "@memberjunction/computer-use-engine": "5.35.0",
58
+ "@memberjunction/config": "5.35.0",
59
+ "@memberjunction/core": "5.35.0",
60
+ "@memberjunction/core-actions": "5.35.0",
61
+ "@memberjunction/core-entities": "5.35.0",
62
+ "@memberjunction/core-entities-server": "5.35.0",
63
+ "@memberjunction/data-context": "5.35.0",
64
+ "@memberjunction/data-context-server": "5.35.0",
65
+ "@memberjunction/doc-utils": "5.35.0",
66
+ "@memberjunction/encryption": "5.35.0",
67
+ "@memberjunction/entity-communications-base": "5.35.0",
68
+ "@memberjunction/entity-communications-server": "5.35.0",
69
+ "@memberjunction/external-change-detection": "5.35.0",
70
+ "@memberjunction/generic-database-provider": "5.35.0",
71
+ "@memberjunction/global": "5.35.0",
72
+ "@memberjunction/graphql-dataprovider": "5.35.0",
73
+ "@memberjunction/integration-engine": "5.35.0",
74
+ "@memberjunction/integration-schema-builder": "5.35.0",
75
+ "@memberjunction/interactive-component-types": "5.35.0",
76
+ "@memberjunction/notifications": "5.35.0",
77
+ "@memberjunction/postgresql-dataprovider": "5.35.0",
78
+ "@memberjunction/queue": "5.35.0",
79
+ "@memberjunction/redis-provider": "5.35.0",
80
+ "@memberjunction/scheduling-actions": "5.35.0",
81
+ "@memberjunction/scheduling-base-types": "5.35.0",
82
+ "@memberjunction/scheduling-engine": "5.35.0",
83
+ "@memberjunction/scheduling-engine-base": "5.35.0",
84
+ "@memberjunction/schema-engine": "5.35.0",
85
+ "@memberjunction/search-engine": "5.35.0",
86
+ "@memberjunction/server-extensions-core": "5.35.0",
87
+ "@memberjunction/skip-types": "5.35.0",
88
+ "@memberjunction/sql-dialect": "5.35.0",
89
+ "@memberjunction/sqlserver-dataprovider": "5.35.0",
90
+ "@memberjunction/storage": "5.35.0",
91
+ "@memberjunction/tag-engine": "5.35.0",
92
+ "@memberjunction/tag-engine-base": "5.35.0",
93
+ "@memberjunction/templates": "5.35.0",
94
+ "@memberjunction/testing-engine": "5.35.0",
95
+ "@memberjunction/testing-engine-base": "5.35.0",
96
+ "@memberjunction/version-history": "5.35.0",
97
97
  "@types/compression": "^1.8.1",
98
98
  "@types/cors": "^2.8.19",
99
99
  "@types/jsonwebtoken": "9.0.10",
@@ -7094,7 +7094,7 @@ export class MJAIAgentRunStep_ {
7094
7094
  @Field(() => Int, {description: `Sequential number of this step within the agent run, starting from 1`})
7095
7095
  StepNumber: number;
7096
7096
 
7097
- @Field({description: `Type of execution step: Prompt, Actions, Sub-Agent, Decision, Chat, Validation`})
7097
+ @Field({description: `Type of execution step: Prompt, Actions, Sub-Agent, Decision, Chat, Validation, ForEach, While, Tool`})
7098
7098
  @MaxLength(50)
7099
7099
  StepType: string;
7100
7100
 
@@ -9453,6 +9453,9 @@ if this limit is exceeded.`})
9453
9453
  @MaxLength(20)
9454
9454
  SearchScopeAccess: string;
9455
9455
 
9456
+ @Field(() => Boolean, {description: `Per-agent opt-in to a Generic Binary fallback for file uploads whose MIME type does not match any registered Artifact Type. When false (default), unrecognized uploads are rejected at upload time with an actionable error. When true, unrecognized uploads resolve to the Generic Binary artifact type, exposing only get_full and get_metadata tools. Scoped per agent — there is no system-wide global flag.`})
9457
+ AcceptUnregisteredFiles: boolean;
9458
+
9456
9459
  @Field({nullable: true})
9457
9460
  @MaxLength(255)
9458
9461
  Parent?: string;
@@ -9763,6 +9766,9 @@ export class CreateMJAIAgentInput {
9763
9766
  @Field({ nullable: true })
9764
9767
  SearchScopeAccess?: string;
9765
9768
 
9769
+ @Field(() => Boolean, { nullable: true })
9770
+ AcceptUnregisteredFiles?: boolean;
9771
+
9766
9772
  @Field(() => RestoreContextInput, { nullable: true })
9767
9773
  RestoreContext___?: RestoreContextInput;
9768
9774
  }
@@ -9962,6 +9968,9 @@ export class UpdateMJAIAgentInput {
9962
9968
  @Field({ nullable: true })
9963
9969
  SearchScopeAccess?: string;
9964
9970
 
9971
+ @Field(() => Boolean, { nullable: true })
9972
+ AcceptUnregisteredFiles?: boolean;
9973
+
9965
9974
  @Field(() => [KeyValuePairInput], { nullable: true })
9966
9975
  OldValues___?: KeyValuePairInput[];
9967
9976
 
@@ -21569,6 +21578,16 @@ export class MJArtifactType_ {
21569
21578
  @MaxLength(100)
21570
21579
  ToolLibraryClass?: string;
21571
21580
 
21581
+ @Field(() => Int, {description: `Deterministic tiebreaker when multiple Artifact Types match the same MIME pattern. Higher values win. Within a specificity tier (exact > subtype-wildcard), the resolver sorts by Priority desc, then SystemSupplied = false beats SystemSupplied = true, then lowest ID wins.`})
21582
+ Priority: number;
21583
+
21584
+ @Field({description: `How artifacts of this type are delivered to the LLM by default. Inline: emitted as an inline content block (image_url, audio_url, small text, etc.) when the model supports the modality and the size is under the inline cap. ToolsOnly: never inlined; the agent reaches the bytes only through tool calls (get_full, library-specific tools). Per-instance override is one-way via ConversationArtifactVersion.ForceToolsOnly — an instance can opt out of inline but never opt in when the type default is ToolsOnly.`})
21585
+ @MaxLength(20)
21586
+ DefaultDeliveryMode: string;
21587
+
21588
+ @Field(() => Boolean, {description: `True for Artifact Types shipped as part of the MemberJunction default registry (JSON, PDF, Office variants, Image/Audio/Video, Generic Text, Generic Binary). False for user/org-supplied customizations. Used as a tiebreaker in MIME pattern resolution: user customizations win over shipped defaults at equal Priority.`})
21589
+ SystemSupplied: boolean;
21590
+
21572
21591
  @Field({nullable: true})
21573
21592
  @MaxLength(100)
21574
21593
  Parent?: string;
@@ -21632,6 +21651,15 @@ export class CreateMJArtifactTypeInput {
21632
21651
  @Field({ nullable: true })
21633
21652
  ToolLibraryClass: string | null;
21634
21653
 
21654
+ @Field(() => Int, { nullable: true })
21655
+ Priority?: number;
21656
+
21657
+ @Field({ nullable: true })
21658
+ DefaultDeliveryMode?: string;
21659
+
21660
+ @Field(() => Boolean, { nullable: true })
21661
+ SystemSupplied?: boolean;
21662
+
21635
21663
  @Field(() => RestoreContextInput, { nullable: true })
21636
21664
  RestoreContext___?: RestoreContextInput;
21637
21665
  }
@@ -21675,6 +21703,15 @@ export class UpdateMJArtifactTypeInput {
21675
21703
  @Field({ nullable: true })
21676
21704
  ToolLibraryClass?: string | null;
21677
21705
 
21706
+ @Field(() => Int, { nullable: true })
21707
+ Priority?: number;
21708
+
21709
+ @Field({ nullable: true })
21710
+ DefaultDeliveryMode?: string;
21711
+
21712
+ @Field(() => Boolean, { nullable: true })
21713
+ SystemSupplied?: boolean;
21714
+
21678
21715
  @Field(() => [KeyValuePairInput], { nullable: true })
21679
21716
  OldValues___?: KeyValuePairInput[];
21680
21717
 
@@ -22245,6 +22282,9 @@ export class MJArtifactVersion_ {
22245
22282
  @Field(() => Int, {nullable: true, description: `Size of the stored file in bytes. Denormalized for display without loading the file. Only populated when ContentMode is 'File'.`})
22246
22283
  ContentSizeBytes?: number;
22247
22284
 
22285
+ @Field(() => Boolean, {description: `One-way override that forces this artifact version to be delivered via tools regardless of the Artifact Type's DefaultDeliveryMode. When true, the resolver never emits an inline content block for this version. There is no inverse override — an instance cannot be widened from ToolsOnly to Inline. Default false.`})
22286
+ ForceToolsOnly: boolean;
22287
+
22248
22288
  @Field()
22249
22289
  @MaxLength(255)
22250
22290
  Artifact: string;
@@ -22269,6 +22309,9 @@ export class MJArtifactVersion_ {
22269
22309
  @Field(() => [MJConversationDetailArtifact_])
22270
22310
  MJConversationDetailArtifacts_ArtifactVersionIDArray: MJConversationDetailArtifact_[]; // Link to MJConversationDetailArtifacts
22271
22311
 
22312
+ @Field(() => [MJConversationDetailAttachment_])
22313
+ MJConversationDetailAttachments_ArtifactVersionIDArray: MJConversationDetailAttachment_[]; // Link to MJConversationDetailAttachments
22314
+
22272
22315
  }
22273
22316
 
22274
22317
  //****************************************************************************
@@ -22321,6 +22364,9 @@ export class CreateMJArtifactVersionInput {
22321
22364
  @Field(() => Int, { nullable: true })
22322
22365
  ContentSizeBytes: number | null;
22323
22366
 
22367
+ @Field(() => Boolean, { nullable: true })
22368
+ ForceToolsOnly?: boolean;
22369
+
22324
22370
  @Field(() => RestoreContextInput, { nullable: true })
22325
22371
  RestoreContext___?: RestoreContextInput;
22326
22372
  }
@@ -22376,6 +22422,9 @@ export class UpdateMJArtifactVersionInput {
22376
22422
  @Field(() => Int, { nullable: true })
22377
22423
  ContentSizeBytes?: number | null;
22378
22424
 
22425
+ @Field(() => Boolean, { nullable: true })
22426
+ ForceToolsOnly?: boolean;
22427
+
22379
22428
  @Field(() => [KeyValuePairInput], { nullable: true })
22380
22429
  OldValues___?: KeyValuePairInput[];
22381
22430
 
@@ -22480,6 +22529,16 @@ export class MJArtifactVersionResolver extends ResolverBase {
22480
22529
  return result;
22481
22530
  }
22482
22531
 
22532
+ @FieldResolver(() => [MJConversationDetailAttachment_])
22533
+ async MJConversationDetailAttachments_ArtifactVersionIDArray(@Root() mjartifactversion_: MJArtifactVersion_, @Ctx() { userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
22534
+ this.CheckUserReadPermissions('MJ: Conversation Detail Attachments', userPayload);
22535
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
22536
+ const sSQL = `SELECT * FROM ${provider.QuoteSchemaAndView(Metadata.Provider.ConfigData.MJCoreSchemaName, 'vwConversationDetailAttachments')} WHERE ${provider.QuoteIdentifier('ArtifactVersionID')}='${mjartifactversion_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Conversation Detail Attachments', userPayload, EntityPermissionType.Read, 'AND');
22537
+ const rows = await provider.ExecuteSQL(sSQL, undefined, undefined, this.GetUserFromPayload(userPayload));
22538
+ const result = await this.ArrayMapFieldNamesToCodeNames('MJ: Conversation Detail Attachments', rows, this.GetUserFromPayload(userPayload));
22539
+ return result;
22540
+ }
22541
+
22483
22542
  @Mutation(() => MJArtifactVersion_)
22484
22543
  async CreateMJArtifactVersion(
22485
22544
  @Arg('input', () => CreateMJArtifactVersionInput) input: CreateMJArtifactVersionInput,
@@ -32828,6 +32887,10 @@ export class MJConversationDetailAttachment_ {
32828
32887
  @Field({nullable: true, description: `Description of the attachment providing context about its content and purpose.`})
32829
32888
  Description?: string;
32830
32889
 
32890
+ @Field({nullable: true, description: `Foreign key to the ArtifactVersion created alongside this attachment by the storage-unification path. When set, the agent resolver routes via the artifact path (manifest + tool dispatch) and skips inline embedding of the attachment to avoid double-processing. NULL for pre-v5.35 attachment rows authored before storage unification.`})
32891
+ @MaxLength(36)
32892
+ ArtifactVersionID?: string;
32893
+
32831
32894
  @Field()
32832
32895
  ConversationDetail: string;
32833
32896
 
@@ -32839,6 +32902,10 @@ export class MJConversationDetailAttachment_ {
32839
32902
  @MaxLength(500)
32840
32903
  File?: string;
32841
32904
 
32905
+ @Field({nullable: true})
32906
+ @MaxLength(255)
32907
+ ArtifactVersion?: string;
32908
+
32842
32909
  }
32843
32910
 
32844
32911
  //****************************************************************************
@@ -32888,6 +32955,9 @@ export class CreateMJConversationDetailAttachmentInput {
32888
32955
  @Field({ nullable: true })
32889
32956
  Description: string | null;
32890
32957
 
32958
+ @Field({ nullable: true })
32959
+ ArtifactVersionID: string | null;
32960
+
32891
32961
  @Field(() => RestoreContextInput, { nullable: true })
32892
32962
  RestoreContext___?: RestoreContextInput;
32893
32963
  }
@@ -32940,6 +33010,9 @@ export class UpdateMJConversationDetailAttachmentInput {
32940
33010
  @Field({ nullable: true })
32941
33011
  Description?: string | null;
32942
33012
 
33013
+ @Field({ nullable: true })
33014
+ ArtifactVersionID?: string | null;
33015
+
32943
33016
  @Field(() => [KeyValuePairInput], { nullable: true })
32944
33017
  OldValues___?: KeyValuePairInput[];
32945
33018
 
@@ -60908,7 +60981,7 @@ export class MJRecordGeoCode_ {
60908
60981
  @Field({nullable: true, description: `Timestamp of when geocoding was last attempted (success or failure).`})
60909
60982
  GeocodedAt?: Date;
60910
60983
 
60911
- @Field({nullable: true, description: `How this geocode was produced: google (Google Geocoding API), reference_data (resolved via Country/StateProvince tables), manual (user-entered), ip_geolocation (IP lookup), native (copied from entity lat/lng fields), reverse (reverse geocode from coordinates).`})
60984
+ @Field({nullable: true, description: `Source that produced this geocode. One of: google, geocodio, here, reference_data, manual, ip_geolocation, native, reverse.`})
60912
60985
  @MaxLength(30)
60913
60986
  GeocodingSource?: string;
60914
60987
 
@@ -359,7 +359,8 @@ export class ResolverBase {
359
359
  viewInput.Aggregates,
360
360
  viewInput.AfterKey
361
361
  ? CompositeKey.FromKeyValuePairs((viewInput.AfterKey as { KeyValuePairs: { FieldName: string; Value: string }[] }).KeyValuePairs)
362
- : undefined
362
+ : undefined,
363
+ viewInput.BypassCache
363
364
  );
364
365
  }
365
366
  else {
@@ -400,7 +401,9 @@ export class ResolverBase {
400
401
  userPayload,
401
402
  viewInput.MaxRows,
402
403
  viewInput.StartRow,
403
- viewInput.Aggregates
404
+ viewInput.Aggregates,
405
+ undefined,
406
+ viewInput.BypassCache
404
407
  );
405
408
  } catch (err) {
406
409
  console.log(err);
@@ -444,7 +447,9 @@ export class ResolverBase {
444
447
  userPayload,
445
448
  viewInput.MaxRows,
446
449
  viewInput.StartRow,
447
- viewInput.Aggregates
450
+ viewInput.Aggregates,
451
+ undefined,
452
+ viewInput.BypassCache
448
453
  );
449
454
  } catch (err) {
450
455
  console.log(err);
@@ -517,6 +522,7 @@ export class ResolverBase {
517
522
  resultType: viewInput.ResultType,
518
523
  userPayload,
519
524
  aggregates: viewInput.Aggregates,
525
+ bypassCache: viewInput.BypassCache,
520
526
  });
521
527
  } catch (err) {
522
528
  LogError(err);
@@ -693,7 +699,8 @@ export class ResolverBase {
693
699
  maxRows: number | undefined,
694
700
  startRow: number | undefined,
695
701
  aggregates?: AggregateExpression[],
696
- afterKey?: CompositeKey
702
+ afterKey?: CompositeKey,
703
+ bypassCache?: boolean
697
704
  ) {
698
705
  try {
699
706
  if (!viewInfo || !userPayload) return null;
@@ -757,6 +764,7 @@ export class ResolverBase {
757
764
  AuditLogDescription: auditLogDescription,
758
765
  ResultType: rt,
759
766
  Aggregates: aggregates,
767
+ BypassCache: bypassCache,
760
768
  },
761
769
  user
762
770
  );
@@ -870,6 +878,7 @@ export class ResolverBase {
870
878
  AuditLogDescription: param.auditLogDescription,
871
879
  ResultType: rt,
872
880
  Aggregates: param.aggregates,
881
+ BypassCache: param.bypassCache,
873
882
  });
874
883
  }
875
884
 
@@ -170,6 +170,13 @@ export class RunViewByIDInput {
170
170
  description: 'Optional aggregate expressions to calculate on the full result set (e.g., SUM, COUNT, AVG). Results are returned in AggregateResults.',
171
171
  })
172
172
  Aggregates?: AggregateExpressionInput[];
173
+
174
+ @Field(() => Boolean, {
175
+ nullable: true,
176
+ description:
177
+ 'Optional, when true bypasses ALL server-side caching for this view run — the pre-check cache lookup is skipped and the result is not stored in the cache. Use for maintenance/audit queries that must see true database state, or to force-refresh views whose filters reference rows the server cache invalidator cannot follow (e.g., cross-entity subqueries against vwListDetails).',
178
+ })
179
+ BypassCache?: boolean;
173
180
  }
174
181
 
175
182
  @InputType()
@@ -277,6 +284,13 @@ export class RunViewByNameInput {
277
284
  description: 'Optional aggregate expressions to calculate on the full result set (e.g., SUM, COUNT, AVG). Results are returned in AggregateResults.',
278
285
  })
279
286
  Aggregates?: AggregateExpressionInput[];
287
+
288
+ @Field(() => Boolean, {
289
+ nullable: true,
290
+ description:
291
+ 'Optional, when true bypasses ALL server-side caching for this view run — the pre-check cache lookup is skipped and the result is not stored in the cache. Use for maintenance/audit queries that must see true database state, or to force-refresh views whose filters reference rows the server cache invalidator cannot follow (e.g., cross-entity subqueries against vwListDetails).',
292
+ })
293
+ BypassCache?: boolean;
280
294
  }
281
295
 
282
296
  @InputType()
@@ -370,6 +384,13 @@ export class RunDynamicViewInput {
370
384
  description: 'Optional aggregate expressions to calculate on the full result set (e.g., SUM, COUNT, AVG). Results are returned in AggregateResults.',
371
385
  })
372
386
  Aggregates?: AggregateExpressionInput[];
387
+
388
+ @Field(() => Boolean, {
389
+ nullable: true,
390
+ description:
391
+ 'Optional, when true bypasses ALL server-side caching for this view run — the pre-check cache lookup is skipped and the result is not stored in the cache. Use for maintenance/audit queries that must see true database state, or to force-refresh views whose filters reference rows the server cache invalidator cannot follow (e.g., cross-entity subqueries against vwListDetails).',
392
+ })
393
+ BypassCache?: boolean;
373
394
  }
374
395
 
375
396
  @InputType()
@@ -492,6 +513,13 @@ export class RunViewGenericInput {
492
513
  description: 'Optional aggregate expressions to calculate on the full result set (e.g., SUM, COUNT, AVG). Results are returned in AggregateResults.',
493
514
  })
494
515
  Aggregates?: AggregateExpressionInput[];
516
+
517
+ @Field(() => Boolean, {
518
+ nullable: true,
519
+ description:
520
+ 'Optional, when true bypasses ALL server-side caching for this view run — the pre-check cache lookup is skipped and the result is not stored in the cache. Use for maintenance/audit queries that must see true database state, or to force-refresh views whose filters reference rows the server cache invalidator cannot follow (e.g., cross-entity subqueries against vwListDetails).',
521
+ })
522
+ BypassCache?: boolean;
495
523
  }
496
524
 
497
525
  //****************************************************************************