@finos/legend-graph 32.3.21 → 32.3.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/lib/graph/Core_HashUtils.d.ts +5 -0
  2. package/lib/graph/Core_HashUtils.d.ts.map +1 -1
  3. package/lib/graph/Core_HashUtils.js +5 -0
  4. package/lib/graph/Core_HashUtils.js.map +1 -1
  5. package/lib/graph/metamodel/pure/dataProduct/DataProduct.d.ts +30 -0
  6. package/lib/graph/metamodel/pure/dataProduct/DataProduct.d.ts.map +1 -1
  7. package/lib/graph/metamodel/pure/dataProduct/DataProduct.js +76 -1
  8. package/lib/graph/metamodel/pure/dataProduct/DataProduct.js.map +1 -1
  9. package/lib/graph/metamodel/pure/packageableElements/service/Service.d.ts +1 -0
  10. package/lib/graph/metamodel/pure/packageableElements/service/Service.d.ts.map +1 -1
  11. package/lib/graph/metamodel/pure/packageableElements/service/Service.js +2 -0
  12. package/lib/graph/metamodel/pure/packageableElements/service/Service.js.map +1 -1
  13. package/lib/graph-manager/action/changeDetection/DSL_Service_ObserverHelper.d.ts.map +1 -1
  14. package/lib/graph-manager/action/changeDetection/DSL_Service_ObserverHelper.js +1 -0
  15. package/lib/graph-manager/action/changeDetection/DSL_Service_ObserverHelper.js.map +1 -1
  16. package/lib/graph-manager/action/validation/DSL_Service_ValidationHelper.d.ts +1 -0
  17. package/lib/graph-manager/action/validation/DSL_Service_ValidationHelper.d.ts.map +1 -1
  18. package/lib/graph-manager/action/validation/DSL_Service_ValidationHelper.js +14 -0
  19. package/lib/graph-manager/action/validation/DSL_Service_ValidationHelper.js.map +1 -1
  20. package/lib/graph-manager/protocol/pure/v1/lakehouse/deploy/V1_DataProductArtifact.d.ts +89 -0
  21. package/lib/graph-manager/protocol/pure/v1/lakehouse/deploy/V1_DataProductArtifact.d.ts.map +1 -1
  22. package/lib/graph-manager/protocol/pure/v1/lakehouse/deploy/V1_DataProductArtifact.js +195 -2
  23. package/lib/graph-manager/protocol/pure/v1/lakehouse/deploy/V1_DataProductArtifact.js.map +1 -1
  24. package/lib/graph-manager/protocol/pure/v1/lakehouse/entitlements/V1_ConsumerEntitlements.d.ts +5 -0
  25. package/lib/graph-manager/protocol/pure/v1/lakehouse/entitlements/V1_ConsumerEntitlements.d.ts.map +1 -1
  26. package/lib/graph-manager/protocol/pure/v1/lakehouse/entitlements/V1_ConsumerEntitlements.js +5 -0
  27. package/lib/graph-manager/protocol/pure/v1/lakehouse/entitlements/V1_ConsumerEntitlements.js.map +1 -1
  28. package/lib/graph-manager/protocol/pure/v1/model/packageableElements/dataProduct/V1_DataProduct.d.ts +30 -0
  29. package/lib/graph-manager/protocol/pure/v1/model/packageableElements/dataProduct/V1_DataProduct.d.ts.map +1 -1
  30. package/lib/graph-manager/protocol/pure/v1/model/packageableElements/dataProduct/V1_DataProduct.js +67 -0
  31. package/lib/graph-manager/protocol/pure/v1/model/packageableElements/dataProduct/V1_DataProduct.js.map +1 -1
  32. package/lib/graph-manager/protocol/pure/v1/model/packageableElements/service/V1_Service.d.ts +1 -0
  33. package/lib/graph-manager/protocol/pure/v1/model/packageableElements/service/V1_Service.d.ts.map +1 -1
  34. package/lib/graph-manager/protocol/pure/v1/model/packageableElements/service/V1_Service.js +2 -0
  35. package/lib/graph-manager/protocol/pure/v1/model/packageableElements/service/V1_Service.js.map +1 -1
  36. package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DataProductTransformer.d.ts.map +1 -1
  37. package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DataProductTransformer.js +74 -2
  38. package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DataProductTransformer.js.map +1 -1
  39. package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_ServiceTransformer.d.ts.map +1 -1
  40. package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_ServiceTransformer.js +1 -0
  41. package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_ServiceTransformer.js.map +1 -1
  42. package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementSecondPassBuilder.d.ts.map +1 -1
  43. package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementSecondPassBuilder.js +5 -1
  44. package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementSecondPassBuilder.js.map +1 -1
  45. package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_DataProductBuilder.d.ts +5 -2
  46. package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_DataProductBuilder.d.ts.map +1 -1
  47. package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_DataProductBuilder.js +93 -3
  48. package/lib/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_DataProductBuilder.js.map +1 -1
  49. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_DataProductSerializationHelper.d.ts +10 -1
  50. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_DataProductSerializationHelper.d.ts.map +1 -1
  51. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_DataProductSerializationHelper.js +53 -1
  52. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_DataProductSerializationHelper.js.map +1 -1
  53. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.d.ts.map +1 -1
  54. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.js +1 -0
  55. package/lib/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.js.map +1 -1
  56. package/lib/index.d.ts +3 -3
  57. package/lib/index.d.ts.map +1 -1
  58. package/lib/index.js +3 -3
  59. package/lib/index.js.map +1 -1
  60. package/lib/package.json +1 -1
  61. package/package.json +1 -1
  62. package/src/graph/Core_HashUtils.ts +5 -0
  63. package/src/graph/metamodel/pure/dataProduct/DataProduct.ts +89 -1
  64. package/src/graph/metamodel/pure/packageableElements/service/Service.ts +2 -0
  65. package/src/graph-manager/action/changeDetection/DSL_Service_ObserverHelper.ts +1 -0
  66. package/src/graph-manager/action/validation/DSL_Service_ValidationHelper.ts +19 -0
  67. package/src/graph-manager/protocol/pure/v1/lakehouse/deploy/V1_DataProductArtifact.ts +294 -0
  68. package/src/graph-manager/protocol/pure/v1/lakehouse/entitlements/V1_ConsumerEntitlements.ts +6 -0
  69. package/src/graph-manager/protocol/pure/v1/model/packageableElements/dataProduct/V1_DataProduct.ts +77 -0
  70. package/src/graph-manager/protocol/pure/v1/model/packageableElements/service/V1_Service.ts +2 -0
  71. package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DataProductTransformer.ts +105 -0
  72. package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_ServiceTransformer.ts +1 -0
  73. package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/V1_ElementSecondPassBuilder.ts +8 -0
  74. package/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_DataProductBuilder.ts +161 -1
  75. package/src/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_DataProductSerializationHelper.ts +92 -0
  76. package/src/graph-manager/protocol/pure/v1/transformation/pureProtocol/serializationHelpers/V1_ServiceSerializationHelper.ts +1 -0
  77. package/src/index.ts +11 -0
@@ -38,6 +38,8 @@ import type { Class } from '../packageableElements/domain/Class.js';
38
38
  import type { Enumeration } from '../packageableElements/domain/Enumeration.js';
39
39
  import type { Association } from '../packageableElements/domain/Association.js';
40
40
  import type { EmbeddedData } from '../data/EmbeddedData.js';
41
+ import { ConcreteFunctionDefinition } from '../packageableElements/function/ConcreteFunctionDefinition.js';
42
+ import { generateFunctionPrettyName } from '../../../helpers/PureLanguageHelper.js';
41
43
 
42
44
  export abstract class AccessPoint implements Hashable {
43
45
  id: string;
@@ -157,7 +159,7 @@ export class DataProductDiagram implements Hashable {
157
159
  CORE_HASH_STRUCTURE.DATA_PRODUCT_DIAGRAM,
158
160
  this.title,
159
161
  this.description ?? '',
160
- this.diagram,
162
+ this.diagram.path,
161
163
  ]);
162
164
  }
163
165
  }
@@ -200,6 +202,90 @@ export class ModelAccessPointGroup
200
202
  }
201
203
  }
202
204
 
205
+ export class NativeModelExecutionContext implements Hashable {
206
+ key!: string;
207
+ mapping!: PackageableElementReference<Mapping>;
208
+ runtime: PackageableElementReference<PackageableRuntime> | undefined;
209
+
210
+ get hashCode(): string {
211
+ return hashArray([
212
+ CORE_HASH_STRUCTURE.DATA_PRODUCT_NATIVE_MODEL_EXECUTION_CONTEXT,
213
+ this.key,
214
+ this.mapping.valueForSerialization ?? '',
215
+ this.runtime?.valueForSerialization ?? '',
216
+ ]);
217
+ }
218
+ }
219
+
220
+ export class NativeModelAccess implements Hashable {
221
+ featuredElements: DataProductElementScope[] = [];
222
+ nativeModelExecutionContexts!: NativeModelExecutionContext[];
223
+ defaultExecutionContext!: string;
224
+ diagrams: DataProductDiagram[] = [];
225
+ sampleQueries: SampleQuery[] = [];
226
+
227
+ get hashCode(): string {
228
+ return hashArray([
229
+ CORE_HASH_STRUCTURE.DATA_PRODUCT_NATIVE_MODEL_ACCESS,
230
+ hashArray(this.featuredElements),
231
+ hashArray(this.diagrams),
232
+ hashArray(this.nativeModelExecutionContexts),
233
+ this.defaultExecutionContext,
234
+ hashArray(this.sampleQueries),
235
+ ]);
236
+ }
237
+ }
238
+
239
+ export abstract class SampleQuery implements Hashable {
240
+ id!: string;
241
+ title!: string;
242
+ description: string | undefined;
243
+ executionContextKey!: string;
244
+
245
+ get hashCode(): string {
246
+ return hashArray([
247
+ CORE_HASH_STRUCTURE.DATA_PRODUCT_SAMPLE_QUERY,
248
+ this.id,
249
+ this.title,
250
+ this.description ?? '',
251
+ this.executionContextKey,
252
+ ]);
253
+ }
254
+ }
255
+
256
+ export class InLineSampleQuery extends SampleQuery implements Hashable {
257
+ query!: RawLambda;
258
+
259
+ override get hashCode(): string {
260
+ return hashArray([
261
+ CORE_HASH_STRUCTURE.DATA_PRODUCT_INLINE_SAMPLE_QUERY,
262
+ super.hashCode,
263
+ this.query,
264
+ ]);
265
+ }
266
+ }
267
+
268
+ export class PackageableElementSampleQuery
269
+ extends SampleQuery
270
+ implements Hashable
271
+ {
272
+ query!: PackageableElementReference<PackageableElement>;
273
+
274
+ override get hashCode(): string {
275
+ return hashArray([
276
+ CORE_HASH_STRUCTURE.DATA_PRODUCT_PACKAGEABLE_ELEMENT_SAMPLE_QUERY,
277
+ super.hashCode,
278
+ this.query.value instanceof ConcreteFunctionDefinition
279
+ ? generateFunctionPrettyName(this.query.value, {
280
+ fullPath: true,
281
+ spacing: false,
282
+ notIncludeParamName: true,
283
+ })
284
+ : (this.query.valueForSerialization ?? ''),
285
+ ]);
286
+ }
287
+ }
288
+
203
289
  export class Email implements Hashable {
204
290
  title!: string;
205
291
  address!: string;
@@ -383,6 +469,7 @@ export class DataProduct extends PackageableElement {
383
469
  description: string | undefined;
384
470
  icon: DataProductIcon | undefined;
385
471
  accessPointGroups: AccessPointGroup[] = [];
472
+ nativeModelAccess: NativeModelAccess | undefined;
386
473
  supportInfo: SupportInfo | undefined;
387
474
  type: DataProductType | undefined;
388
475
  sampleValues: EmbeddedData[] | undefined;
@@ -401,6 +488,7 @@ export class DataProduct extends PackageableElement {
401
488
  this.description ?? '',
402
489
  this.icon ?? '',
403
490
  hashArray(this.accessPointGroups),
491
+ this.nativeModelAccess ?? '',
404
492
  this.supportInfo ?? '',
405
493
  this.type ?? '',
406
494
  hashArray(this.stereotypes.map((val) => val.pointerHashCode)),
@@ -35,6 +35,7 @@ export class Service extends PackageableElement implements Hashable, Testable {
35
35
  ownership: ServiceOwnership | undefined;
36
36
  documentation = '';
37
37
  autoActivateUpdates = true;
38
+ mcpServer?: string | undefined;
38
39
  execution!: ServiceExecution;
39
40
  test?: DEPRECATED__ServiceTest | undefined;
40
41
  tests: ServiceTestSuite[] = [];
@@ -63,6 +64,7 @@ export class Service extends PackageableElement implements Hashable, Testable {
63
64
  this.autoActivateUpdates.toString(),
64
65
  this.execution,
65
66
  this.test ?? '',
67
+ this.mcpServer ?? '',
66
68
  hashArray(this.tests),
67
69
  hashArray(this.postValidations),
68
70
  hashArray(this.taggedValues),
@@ -353,6 +353,7 @@ export const observe_Service = skipObservedWithContext(
353
353
  ownership: observable,
354
354
  documentation: observable,
355
355
  autoActivateUpdates: observable,
356
+ mcpServer: observable,
356
357
  execution: observable,
357
358
  test: observable,
358
359
  tests: observable,
@@ -41,6 +41,25 @@ export const validate_ServicePattern = (
41
41
  return errors.length ? createValidationError(errors) : undefined;
42
42
  };
43
43
 
44
+ export const validate_ServiceMcpServer = (
45
+ mcpServer: string | undefined,
46
+ ): ValidationIssue | undefined => {
47
+ const errors: string[] = [];
48
+ if (!mcpServer) {
49
+ return undefined;
50
+ } else {
51
+ // MCP server must be an identifier matching: ^[a-zA-Z_][a-zA-Z0-9_]*$
52
+ const MCP_SERVER_REGEX = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
53
+ if (!MCP_SERVER_REGEX.test(mcpServer)) {
54
+ addUniqueEntry(
55
+ errors,
56
+ `MCP server must match pattern '^[a-zA-Z_][a-zA-Z0-9_]*$'\n(start with a letter or underscore, followed by letters, digits, or underscores)`,
57
+ );
58
+ }
59
+ }
60
+ return errors.length ? createValidationError(errors) : undefined;
61
+ };
62
+
44
63
  export const validate_PureExecutionQuery = (
45
64
  metamodel: PureExecution,
46
65
  ): ValidationIssue | undefined => {
@@ -15,6 +15,9 @@
15
15
  */
16
16
 
17
17
  import {
18
+ deserializeMap,
19
+ optionalCustomList,
20
+ optionalCustomUsingModelSchema,
18
21
  SerializationFactory,
19
22
  UnsupportedOperationError,
20
23
  usingConstantValueSchema,
@@ -26,9 +29,11 @@ import {
26
29
  custom,
27
30
  deserialize,
28
31
  list,
32
+ object,
29
33
  optional,
30
34
  primitive,
31
35
  serialize,
36
+ SKIP,
32
37
  } from 'serializr';
33
38
  import type { V1_GenericType } from '../../model/packageableElements/type/V1_GenericType.js';
34
39
  import {
@@ -37,6 +42,10 @@ import {
37
42
  } from '../../transformation/pureProtocol/serializationHelpers/V1_TypeSerializationHelper.js';
38
43
  import type { V1_RelationElement } from '../../model/data/V1_EmbeddedData.js';
39
44
  import { V1_relationElementModelSchema } from '../../transformation/pureProtocol/serializationHelpers/V1_DataElementSerializationHelper.js';
45
+ import { V1_pureModelContextDataPropSchema } from '../../transformation/pureProtocol/V1_PureProtocolSerialization.js';
46
+ import type { V1_PureModelContextData } from '../../model/context/V1_PureModelContextData.js';
47
+ import type { V1_Multiplicity } from '../../model/packageableElements/domain/V1_Multiplicity.js';
48
+ import { V1_multiplicityModelSchema } from '../../transformation/pureProtocol/serializationHelpers/V1_CoreSerializationHelper.js';
40
49
 
41
50
  export enum V1_DataProductTypeEnum {
42
51
  INTERNAL = 'internalDataProductType',
@@ -48,6 +57,11 @@ export enum V1_ResourceBuilderType {
48
57
  FUNCTION_ACCESS_POINT = 'functionAccessPoint',
49
58
  }
50
59
 
60
+ export enum V1_SampleQueryType {
61
+ IN_LINE_SAMPLE_QUERY = 'inLineSampleQuery',
62
+ PACKAGEABLE_ELEMENT_SAMPLE_QUERY = 'packageableElementSampleQuery',
63
+ }
64
+
51
65
  export enum V1_DatabaseDDLImplementationType {
52
66
  VIEW = 'VIEW',
53
67
  TABLE = 'TABLE',
@@ -211,6 +225,282 @@ export class V1_AccessPointImplementation {
211
225
  );
212
226
  }
213
227
 
228
+ export class V1_DatasetSpecification {
229
+ name!: string;
230
+ type!: string;
231
+
232
+ static readonly serialization = new SerializationFactory(
233
+ createModelSchema(V1_DatasetSpecification, {
234
+ name: primitive(),
235
+ type: primitive(),
236
+ }),
237
+ );
238
+ }
239
+
240
+ export class V1_RuntimeGenerationInfo {
241
+ path!: string;
242
+ storePath?: string;
243
+ connectionType?: string;
244
+
245
+ static readonly serialization = new SerializationFactory(
246
+ createModelSchema(V1_RuntimeGenerationInfo, {
247
+ path: primitive(),
248
+ storePath: optional(primitive()),
249
+ connectionType: optional(primitive()),
250
+ }),
251
+ );
252
+ }
253
+
254
+ export class V1_DiagramInfo {
255
+ title!: string;
256
+ description?: string;
257
+ diagram!: string;
258
+
259
+ static readonly serialization = new SerializationFactory(
260
+ createModelSchema(V1_DiagramInfo, {
261
+ title: primitive(),
262
+ description: optional(primitive()),
263
+ diagram: primitive(),
264
+ }),
265
+ );
266
+ }
267
+
268
+ export class V1_MappingGenerationInfo {
269
+ path!: string;
270
+ model!: V1_PureModelContextData;
271
+
272
+ static readonly serialization = new SerializationFactory(
273
+ createModelSchema(V1_MappingGenerationInfo, {
274
+ path: primitive(),
275
+ model: V1_pureModelContextDataPropSchema,
276
+ }),
277
+ );
278
+ }
279
+
280
+ export class V1_NativeModelExecutionContextInfo {
281
+ key!: string;
282
+ mapping!: string;
283
+ runtime?: V1_RuntimeGenerationInfo | undefined;
284
+ datasets: V1_DatasetSpecification[] = [];
285
+
286
+ static readonly serialization = new SerializationFactory(
287
+ createModelSchema(V1_NativeModelExecutionContextInfo, {
288
+ key: primitive(),
289
+ mapping: primitive(),
290
+ runtime: optionalCustomUsingModelSchema(
291
+ V1_RuntimeGenerationInfo.serialization.schema,
292
+ ),
293
+ datasets: list(
294
+ usingModelSchema(V1_DatasetSpecification.serialization.schema),
295
+ ),
296
+ }),
297
+ );
298
+ }
299
+
300
+ export abstract class V1_SampleQueryInfo {
301
+ id!: string;
302
+ title!: string;
303
+ description?: string;
304
+ executionContextKey!: string;
305
+ }
306
+
307
+ export class V1_InLineSampleQueryInfo extends V1_SampleQueryInfo {
308
+ queryGrammar!: string;
309
+
310
+ static readonly serialization = new SerializationFactory(
311
+ createModelSchema(V1_InLineSampleQueryInfo, {
312
+ _type: usingConstantValueSchema(V1_SampleQueryType.IN_LINE_SAMPLE_QUERY),
313
+ id: primitive(),
314
+ title: primitive(),
315
+ description: optional(primitive()),
316
+ queryGrammar: primitive(),
317
+ executionContextKey: primitive(),
318
+ }),
319
+ );
320
+ }
321
+
322
+ export class V1_PackageableElementSampleQueryInfo extends V1_SampleQueryInfo {
323
+ queryPath!: string;
324
+
325
+ static readonly serialization = new SerializationFactory(
326
+ createModelSchema(V1_PackageableElementSampleQueryInfo, {
327
+ _type: usingConstantValueSchema(
328
+ V1_SampleQueryType.PACKAGEABLE_ELEMENT_SAMPLE_QUERY,
329
+ ),
330
+ id: primitive(),
331
+ title: primitive(),
332
+ description: optional(primitive()),
333
+ queryPath: primitive(),
334
+ executionContextKey: primitive(),
335
+ }),
336
+ );
337
+ }
338
+
339
+ const V1_deserializeSampleQuery = (
340
+ json: PlainObject<V1_SampleQueryInfo>,
341
+ ): V1_SampleQueryInfo => {
342
+ switch (json._type) {
343
+ case V1_SampleQueryType.IN_LINE_SAMPLE_QUERY:
344
+ return deserialize(V1_InLineSampleQueryInfo.serialization.schema, json);
345
+ case V1_SampleQueryType.PACKAGEABLE_ELEMENT_SAMPLE_QUERY:
346
+ return deserialize(
347
+ V1_PackageableElementSampleQueryInfo.serialization.schema,
348
+ json,
349
+ );
350
+ default:
351
+ throw new UnsupportedOperationError(
352
+ `Can't deserialize data product sample query of type '${json._type}'`,
353
+ );
354
+ }
355
+ };
356
+
357
+ export class V1_NativeModelAccessInfo {
358
+ diagrams: V1_DiagramInfo[] = [];
359
+ model!: V1_PureModelContextData;
360
+ elements: string[] = [];
361
+ defaultExecutionContext!: string;
362
+ elementDocs: V1_ModelDocumentationEntry[] = [];
363
+ mappingGenerations!: Map<string, V1_MappingGenerationInfo>;
364
+ nativeModelExecutionContexts!: V1_NativeModelExecutionContextInfo[];
365
+ sampleQueries?: V1_SampleQueryInfo[] | undefined;
366
+
367
+ static readonly serialization = new SerializationFactory(
368
+ createModelSchema(V1_NativeModelAccessInfo, {
369
+ diagrams: list(usingModelSchema(V1_DiagramInfo.serialization.schema)),
370
+ model: V1_pureModelContextDataPropSchema,
371
+ elements: list(primitive()),
372
+ elementDocs: list(
373
+ custom(() => SKIP, V1_deserializeModelDocumentationEntry),
374
+ ),
375
+ defaultExecutionContext: primitive(),
376
+ nativeModelExecutionContexts: list(
377
+ usingModelSchema(
378
+ V1_NativeModelExecutionContextInfo.serialization.schema,
379
+ ),
380
+ ),
381
+ sampleQueries: optionalCustomList(
382
+ () => SKIP as never,
383
+ (val: PlainObject<V1_SampleQueryInfo>) =>
384
+ V1_deserializeSampleQuery(val),
385
+ ),
386
+ mappingGenerations: custom(
387
+ () => SKIP,
388
+ (val) =>
389
+ deserializeMap(val, (_val) =>
390
+ deserialize(V1_MappingGenerationInfo.serialization.schema, _val),
391
+ ),
392
+ ),
393
+ }),
394
+ );
395
+ }
396
+
397
+ export class V1_BasicDocumentationEntry {
398
+ name!: string;
399
+ docs: string[] = [];
400
+
401
+ static readonly serialization = new SerializationFactory(
402
+ createModelSchema(V1_BasicDocumentationEntry, {
403
+ docs: list(primitive()),
404
+ name: primitive(),
405
+ }),
406
+ );
407
+ }
408
+
409
+ export class V1_PropertyDocumentationEntry extends V1_BasicDocumentationEntry {
410
+ milestoning?: string | undefined;
411
+ type?: string | undefined;
412
+ multiplicity!: V1_Multiplicity;
413
+
414
+ static override readonly serialization = new SerializationFactory(
415
+ createModelSchema(V1_PropertyDocumentationEntry, {
416
+ docs: list(primitive()),
417
+ milestoning: optional(primitive()),
418
+ multiplicity: usingModelSchema(V1_multiplicityModelSchema),
419
+ name: primitive(),
420
+ type: optional(primitive()),
421
+ }),
422
+ );
423
+ }
424
+
425
+ export class V1_ModelDocumentationEntry extends V1_BasicDocumentationEntry {
426
+ path!: string;
427
+
428
+ static override readonly serialization = new SerializationFactory(
429
+ createModelSchema(V1_ModelDocumentationEntry, {
430
+ docs: list(primitive()),
431
+ name: primitive(),
432
+ path: primitive(),
433
+ }),
434
+ );
435
+ }
436
+
437
+ export class V1_ClassDocumentationEntry extends V1_ModelDocumentationEntry {
438
+ properties: V1_PropertyDocumentationEntry[] = [];
439
+ milestoning?: string | undefined;
440
+
441
+ static override readonly serialization = new SerializationFactory(
442
+ createModelSchema(V1_ClassDocumentationEntry, {
443
+ docs: list(primitive()),
444
+ milestoning: optional(primitive()),
445
+ name: primitive(),
446
+ path: primitive(),
447
+ properties: list(object(V1_PropertyDocumentationEntry)),
448
+ }),
449
+ );
450
+ }
451
+
452
+ export class V1_EnumerationDocumentationEntry extends V1_ModelDocumentationEntry {
453
+ enumValues: V1_BasicDocumentationEntry[] = [];
454
+
455
+ static override readonly serialization = new SerializationFactory(
456
+ createModelSchema(V1_EnumerationDocumentationEntry, {
457
+ enumValues: list(object(V1_BasicDocumentationEntry)),
458
+ docs: list(primitive()),
459
+ name: primitive(),
460
+ path: primitive(),
461
+ }),
462
+ );
463
+ }
464
+
465
+ export class V1_AssociationDocumentationEntry extends V1_ModelDocumentationEntry {
466
+ properties: V1_PropertyDocumentationEntry[] = [];
467
+
468
+ static override readonly serialization = new SerializationFactory(
469
+ createModelSchema(V1_AssociationDocumentationEntry, {
470
+ docs: list(primitive()),
471
+ name: primitive(),
472
+ path: primitive(),
473
+ properties: list(object(V1_PropertyDocumentationEntry)),
474
+ }),
475
+ );
476
+ }
477
+
478
+ enum V1_ModelDocumentationEntryType {
479
+ MODEL = 'model',
480
+ CLASS = 'class',
481
+ ENUMERATION = 'enumeration',
482
+ ASSOCIATION = 'association',
483
+ }
484
+
485
+ function V1_deserializeModelDocumentationEntry(
486
+ json: PlainObject<V1_ModelDocumentationEntry>,
487
+ ): V1_ModelDocumentationEntry {
488
+ switch (json._type) {
489
+ case V1_ModelDocumentationEntryType.MODEL:
490
+ return V1_ModelDocumentationEntry.serialization.fromJson(json);
491
+ case V1_ModelDocumentationEntryType.CLASS:
492
+ return V1_ClassDocumentationEntry.serialization.fromJson(json);
493
+ case V1_ModelDocumentationEntryType.ENUMERATION:
494
+ return V1_EnumerationDocumentationEntry.serialization.fromJson(json);
495
+ case V1_ModelDocumentationEntryType.ASSOCIATION:
496
+ return V1_AssociationDocumentationEntry.serialization.fromJson(json);
497
+ default:
498
+ throw new UnsupportedOperationError(
499
+ `Can't deserialize model documentation entry of type '${json._type}'`,
500
+ );
501
+ }
502
+ }
503
+
214
504
  export class V1_AccessPointGroupInfo {
215
505
  id!: string;
216
506
  description: string | undefined;
@@ -230,6 +520,7 @@ export class V1_AccessPointGroupInfo {
230
520
  export class V1_DataProductArtifact {
231
521
  dataProduct!: V1_DataProductInfo;
232
522
  accessPointGroups: V1_AccessPointGroupInfo[] = [];
523
+ nativeModelAccess?: V1_NativeModelAccessInfo | undefined;
233
524
 
234
525
  static readonly serialization = new SerializationFactory(
235
526
  createModelSchema(V1_DataProductArtifact, {
@@ -237,6 +528,9 @@ export class V1_DataProductArtifact {
237
528
  accessPointGroups: list(
238
529
  usingModelSchema(V1_AccessPointGroupInfo.serialization.schema),
239
530
  ),
531
+ nativeModelAccess: optionalCustomUsingModelSchema(
532
+ V1_NativeModelAccessInfo.serialization.schema,
533
+ ),
240
534
  }),
241
535
  );
242
536
  }
@@ -65,6 +65,12 @@ export class V1_DataContractsResponse {
65
65
  dataContracts?: V1_DataContractSubscriptions[];
66
66
  }
67
67
 
68
+ export class V1_InvalidateDataContractResponse {
69
+ contractId!: string;
70
+ invalidated!: boolean;
71
+ requestId!: string;
72
+ }
73
+
68
74
  // -------------------------------------- Lite Data Contracts ------------------------------------------
69
75
 
70
76
  export class V1_LiteDataContract {
@@ -220,6 +220,81 @@ export class V1_ModelAccessPointGroup extends V1_AccessPointGroup {
220
220
  }
221
221
  }
222
222
 
223
+ export class V1_NativeModelExecutionContext {
224
+ key!: string;
225
+ mapping!: V1_PackageableElementPointer;
226
+ runtime: V1_PackageableElementPointer | undefined;
227
+
228
+ get hashCode(): string {
229
+ return hashArray([
230
+ CORE_HASH_STRUCTURE.DATA_PRODUCT_NATIVE_MODEL_ACCESS,
231
+ this.mapping.path,
232
+ this.runtime?.path ?? '',
233
+ this.key,
234
+ ]);
235
+ }
236
+ }
237
+
238
+ export class V1_NativeModelAccess {
239
+ featuredElements: V1_ElementScope[] | undefined;
240
+ nativeModelExecutionContexts!: V1_NativeModelExecutionContext[];
241
+ defaultExecutionContext!: string;
242
+ diagrams: V1_DataProductDiagram[] | undefined;
243
+ sampleQueries: V1_SampleQuery[] | undefined;
244
+
245
+ get hashCode(): string {
246
+ return hashArray([
247
+ CORE_HASH_STRUCTURE.DATA_PRODUCT_NATIVE_MODEL_ACCESS,
248
+ hashArray(this.nativeModelExecutionContexts),
249
+ hashArray(this.featuredElements ?? []),
250
+ hashArray(this.diagrams ?? []),
251
+ hashArray(this.sampleQueries ?? []),
252
+ this.defaultExecutionContext,
253
+ ]);
254
+ }
255
+ }
256
+
257
+ export abstract class V1_SampleQuery {
258
+ id!: string;
259
+ title!: string;
260
+ description: string | undefined;
261
+ executionContextKey: string | undefined;
262
+
263
+ get hashCode(): string {
264
+ return hashArray([
265
+ CORE_HASH_STRUCTURE.DATA_PRODUCT_SAMPLE_QUERY,
266
+ this.id,
267
+ this.title,
268
+ this.description ?? '',
269
+ this.executionContextKey ?? '',
270
+ ]);
271
+ }
272
+ }
273
+
274
+ export class V1_InLineSampleQuery extends V1_SampleQuery {
275
+ query!: V1_RawLambda;
276
+
277
+ override get hashCode(): string {
278
+ return hashArray([
279
+ CORE_HASH_STRUCTURE.DATA_PRODUCT_INLINE_SAMPLE_QUERY,
280
+ super.hashCode,
281
+ this.query,
282
+ ]);
283
+ }
284
+ }
285
+
286
+ export class V1_PackageableElementSampleQuery extends V1_SampleQuery {
287
+ query!: V1_PackageableElementPointer;
288
+
289
+ override get hashCode(): string {
290
+ return hashArray([
291
+ CORE_HASH_STRUCTURE.DATA_PRODUCT_PACKAGEABLE_ELEMENT_SAMPLE_QUERY,
292
+ super.hashCode,
293
+ this.query.path,
294
+ ]);
295
+ }
296
+ }
297
+
223
298
  export enum V1_DeliveryFrequency {
224
299
  DAILY = 'DAILY',
225
300
  WEEKLY = 'WEEKLY',
@@ -337,6 +412,7 @@ export class V1_DataProduct extends V1_PackageableElement implements Hashable {
337
412
  description: string | undefined;
338
413
  icon: V1_DataProductIcon | undefined;
339
414
  accessPointGroups: V1_AccessPointGroup[] = [];
415
+ nativeModelAccess: V1_NativeModelAccess | undefined;
340
416
  supportInfo: V1_SupportInfo | undefined;
341
417
  type: V1_DataProductType | undefined;
342
418
  stereotypes: V1_StereotypePtr[] = [];
@@ -351,6 +427,7 @@ export class V1_DataProduct extends V1_PackageableElement implements Hashable {
351
427
  this.description ?? '',
352
428
  this.icon ?? '',
353
429
  hashArray(this.accessPointGroups),
430
+ this.nativeModelAccess ?? '',
354
431
  this.supportInfo ?? '',
355
432
  this.type ?? '',
356
433
  hashArray(this.stereotypes),
@@ -35,6 +35,7 @@ export class V1_Service extends V1_PackageableElement implements Hashable {
35
35
  owners: string[] = [];
36
36
  ownership?: V1_ServiceOwnership | undefined;
37
37
  documentation!: string;
38
+ mcpServer?: string | undefined;
38
39
  autoActivateUpdates = true;
39
40
  execution!: V1_ServiceExecution;
40
41
  test?: V1_DEPRECATED__ServiceTest | undefined;
@@ -54,6 +55,7 @@ export class V1_Service extends V1_PackageableElement implements Hashable {
54
55
  this.autoActivateUpdates.toString(),
55
56
  this.execution,
56
57
  this.test ?? '',
58
+ this.mcpServer ?? '',
57
59
  hashArray(this.testSuites),
58
60
  hashArray(this.postValidations),
59
61
  hashArray(this.taggedValues),