@api-client/core 0.19.0 → 0.19.2

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 (121) hide show
  1. package/build/src/decorators/observed.d.ts.map +1 -1
  2. package/build/src/decorators/observed.js +49 -8
  3. package/build/src/decorators/observed.js.map +1 -1
  4. package/build/src/mocking/ModelingMock.d.ts +2 -0
  5. package/build/src/mocking/ModelingMock.d.ts.map +1 -1
  6. package/build/src/mocking/ModelingMock.js +2 -0
  7. package/build/src/mocking/ModelingMock.js.map +1 -1
  8. package/build/src/mocking/lib/Ai.d.ts +11 -0
  9. package/build/src/mocking/lib/Ai.d.ts.map +1 -0
  10. package/build/src/mocking/lib/Ai.js +53 -0
  11. package/build/src/mocking/lib/Ai.js.map +1 -0
  12. package/build/src/modeling/ai/DataDomainDelta.d.ts +146 -0
  13. package/build/src/modeling/ai/DataDomainDelta.d.ts.map +1 -0
  14. package/build/src/modeling/ai/DataDomainDelta.js +729 -0
  15. package/build/src/modeling/ai/DataDomainDelta.js.map +1 -0
  16. package/build/src/modeling/ai/DomainSerialization.d.ts +20 -0
  17. package/build/src/modeling/ai/DomainSerialization.d.ts.map +1 -0
  18. package/build/src/modeling/ai/DomainSerialization.js +185 -0
  19. package/build/src/modeling/ai/DomainSerialization.js.map +1 -0
  20. package/build/src/modeling/ai/domain_response_schema.d.ts +806 -0
  21. package/build/src/modeling/ai/domain_response_schema.d.ts.map +1 -0
  22. package/build/src/modeling/ai/domain_response_schema.js +289 -0
  23. package/build/src/modeling/ai/domain_response_schema.js.map +1 -0
  24. package/build/src/modeling/ai/domain_tools.d.ts +68 -0
  25. package/build/src/modeling/ai/domain_tools.d.ts.map +1 -0
  26. package/build/src/modeling/ai/domain_tools.js +71 -0
  27. package/build/src/modeling/ai/domain_tools.js.map +1 -0
  28. package/build/src/modeling/ai/index.d.ts +10 -0
  29. package/build/src/modeling/ai/index.d.ts.map +1 -0
  30. package/build/src/modeling/ai/index.js +9 -0
  31. package/build/src/modeling/ai/index.js.map +1 -0
  32. package/build/src/modeling/ai/message_parser.d.ts +23 -0
  33. package/build/src/modeling/ai/message_parser.d.ts.map +1 -0
  34. package/build/src/modeling/ai/message_parser.js +93 -0
  35. package/build/src/modeling/ai/message_parser.js.map +1 -0
  36. package/build/src/modeling/ai/prompts/domain_system.d.ts +6 -0
  37. package/build/src/modeling/ai/prompts/domain_system.d.ts.map +1 -0
  38. package/build/src/modeling/ai/prompts/domain_system.js +80 -0
  39. package/build/src/modeling/ai/prompts/domain_system.js.map +1 -0
  40. package/build/src/modeling/ai/tools/DataDomain.tools.d.ts +25 -0
  41. package/build/src/modeling/ai/tools/DataDomain.tools.d.ts.map +1 -0
  42. package/build/src/modeling/ai/tools/DataDomain.tools.js +334 -0
  43. package/build/src/modeling/ai/tools/DataDomain.tools.js.map +1 -0
  44. package/build/src/modeling/ai/tools/Semantic.tools.d.ts +48 -0
  45. package/build/src/modeling/ai/tools/Semantic.tools.d.ts.map +1 -0
  46. package/build/src/modeling/ai/tools/Semantic.tools.js +36 -0
  47. package/build/src/modeling/ai/tools/Semantic.tools.js.map +1 -0
  48. package/build/src/modeling/ai/tools/config.d.ts +13 -0
  49. package/build/src/modeling/ai/tools/config.d.ts.map +1 -0
  50. package/build/src/modeling/ai/tools/config.js +2 -0
  51. package/build/src/modeling/ai/tools/config.js.map +1 -0
  52. package/build/src/modeling/ai/types.d.ts +302 -0
  53. package/build/src/modeling/ai/types.d.ts.map +1 -0
  54. package/build/src/modeling/ai/types.js +40 -0
  55. package/build/src/modeling/ai/types.js.map +1 -0
  56. package/build/src/models/AiMessage.d.ts +185 -0
  57. package/build/src/models/AiMessage.d.ts.map +1 -0
  58. package/build/src/models/AiMessage.js +203 -0
  59. package/build/src/models/AiMessage.js.map +1 -0
  60. package/build/src/models/AiSession.d.ts +80 -0
  61. package/build/src/models/AiSession.d.ts.map +1 -0
  62. package/build/src/models/AiSession.js +102 -0
  63. package/build/src/models/AiSession.js.map +1 -0
  64. package/build/src/models/kinds.d.ts +2 -0
  65. package/build/src/models/kinds.d.ts.map +1 -1
  66. package/build/src/models/kinds.js +2 -0
  67. package/build/src/models/kinds.js.map +1 -1
  68. package/build/src/sdk/AiSdk.d.ts +93 -0
  69. package/build/src/sdk/AiSdk.d.ts.map +1 -0
  70. package/build/src/sdk/AiSdk.js +348 -0
  71. package/build/src/sdk/AiSdk.js.map +1 -0
  72. package/build/src/sdk/RouteBuilder.d.ts +7 -0
  73. package/build/src/sdk/RouteBuilder.d.ts.map +1 -1
  74. package/build/src/sdk/RouteBuilder.js +18 -0
  75. package/build/src/sdk/RouteBuilder.js.map +1 -1
  76. package/build/src/sdk/Sdk.d.ts +2 -0
  77. package/build/src/sdk/Sdk.d.ts.map +1 -1
  78. package/build/src/sdk/Sdk.js +2 -0
  79. package/build/src/sdk/Sdk.js.map +1 -1
  80. package/build/src/sdk/SdkBase.d.ts +4 -0
  81. package/build/src/sdk/SdkBase.d.ts.map +1 -1
  82. package/build/src/sdk/SdkBase.js.map +1 -1
  83. package/build/src/sdk/SdkMock.d.ts +15 -0
  84. package/build/src/sdk/SdkMock.d.ts.map +1 -1
  85. package/build/src/sdk/SdkMock.js +118 -0
  86. package/build/src/sdk/SdkMock.js.map +1 -1
  87. package/build/tsconfig.tsbuildinfo +1 -1
  88. package/package.json +3 -3
  89. package/src/decorators/observed.ts +51 -9
  90. package/src/mocking/ModelingMock.ts +2 -0
  91. package/src/mocking/lib/Ai.ts +71 -0
  92. package/src/modeling/ai/DataDomainDelta.ts +798 -0
  93. package/src/modeling/ai/DomainSerialization.ts +199 -0
  94. package/src/modeling/ai/domain_response_schema.ts +301 -0
  95. package/src/modeling/ai/domain_tools.ts +76 -0
  96. package/src/modeling/ai/message_parser.ts +101 -0
  97. package/src/modeling/ai/prompts/domain_system.ts +79 -0
  98. package/src/modeling/ai/readme.md +8 -0
  99. package/src/modeling/ai/tools/DataDomain.tools.ts +365 -0
  100. package/src/modeling/ai/tools/Semantic.tools.ts +38 -0
  101. package/src/modeling/ai/tools/config.ts +13 -0
  102. package/src/modeling/ai/tools/readme.md +3 -0
  103. package/src/modeling/ai/types.ts +306 -0
  104. package/src/models/AiMessage.ts +335 -0
  105. package/src/models/AiSession.ts +160 -0
  106. package/src/models/kinds.ts +2 -0
  107. package/src/sdk/AiSdk.ts +395 -0
  108. package/src/sdk/RouteBuilder.ts +27 -0
  109. package/src/sdk/Sdk.ts +3 -0
  110. package/src/sdk/SdkBase.ts +4 -0
  111. package/src/sdk/SdkMock.ts +185 -0
  112. package/tests/unit/decorators/observed_recursive.spec.ts +39 -0
  113. package/tests/unit/mocking/current/Ai.spec.ts +109 -0
  114. package/tests/unit/modeling/ai/DataDomainDelta.spec.ts +419 -0
  115. package/tests/unit/modeling/ai/DomainAiTools.spec.ts +29 -0
  116. package/tests/unit/modeling/ai/DomainSerialization.spec.ts +143 -0
  117. package/tests/unit/modeling/ai/message_parser.spec.ts +157 -0
  118. package/tests/unit/modeling/ai/tools/DataDomain.tools.spec.ts +64 -0
  119. package/tests/unit/modeling/ai/tools/Semantic.tools.spec.ts +55 -0
  120. package/tests/unit/models/AiMessage.spec.ts +216 -0
  121. package/tests/unit/models/AiSession.spec.ts +147 -0
@@ -1 +1 @@
1
- {"version":3,"file":"observed.d.ts","sourceRoot":"","sources":["../../../src/decorators/observed.ts"],"names":[],"mappings":"AAKA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE;QAAE,YAAY,IAAI,IAAI,CAAA;KAAE,CAAA;IACjC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAEhC,CAAC,CAAC,SAAS,cAAc,EAAE,CAAC,EAC1B,MAAM,EAAE,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1C,OAAO,EAAE,6BAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,GAC3C,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAErC,CAAC,CAAC,SAAS,cAAc,EAAE,CAAC,EAC1B,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAC1B,OAAO,EAAE,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,GACzC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;CAC/B;AAED,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,6BAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAC5G,KAAK,sBAAsB,CAAC,CAAC,EAAE,CAAC,IAAI,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;AAE7F,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAiBzF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,QAAQ,CAAC,MAAM,GAAE,aAAkB,GAAG,iBAAiB,CAiHtE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,KACpB,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,WAAW,GAAG,SAAS,EACjE,QAAQ,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EACpC,SAAS,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,KACrC,GAAG,CAiEP"}
1
+ {"version":3,"file":"observed.d.ts","sourceRoot":"","sources":["../../../src/decorators/observed.ts"],"names":[],"mappings":"AAKA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE;QAAE,YAAY,IAAI,IAAI,CAAA;KAAE,CAAA;IACjC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAEhC,CAAC,CAAC,SAAS,cAAc,EAAE,CAAC,EAC1B,MAAM,EAAE,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1C,OAAO,EAAE,6BAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,GAC3C,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAErC,CAAC,CAAC,SAAS,cAAc,EAAE,CAAC,EAC1B,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAC1B,OAAO,EAAE,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,GACzC,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;CAC/B;AAED,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,6BAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAC5G,KAAK,sBAAsB,CAAC,CAAC,EAAE,CAAC,IAAI,4BAA4B,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,CAAA;AAE7F,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAqCD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAwBzF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,QAAQ,CAAC,MAAM,GAAE,aAAkB,GAAG,iBAAiB,CAiHtE;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,KACpB,CAAC,SAAS,cAAc,EAAE,CAAC,SAAS,WAAW,GAAG,SAAS,EACjE,QAAQ,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EACpC,SAAS,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,KACrC,GAAG,CAiEP"}
@@ -2,6 +2,40 @@
2
2
  const reactiveSymbol = Symbol('reactive');
3
3
  const proxySymbol = Symbol('proxy');
4
4
  const rawSymbol = Symbol('raw');
5
+ function cleanProxies(obj, seen = new WeakSet()) {
6
+ if (typeof obj !== 'object' || obj === null) {
7
+ return obj;
8
+ }
9
+ if (seen.has(obj)) {
10
+ return obj;
11
+ }
12
+ seen.add(obj);
13
+ if (Array.isArray(obj)) {
14
+ for (let i = 0; i < obj.length; i++) {
15
+ let item = obj[i];
16
+ while (item && typeof item === 'object' && item[rawSymbol]) {
17
+ item = item[rawSymbol];
18
+ }
19
+ if (item && typeof item === 'object') {
20
+ cleanProxies(item, seen);
21
+ }
22
+ obj[i] = item;
23
+ }
24
+ }
25
+ else {
26
+ for (const key of Object.keys(obj)) {
27
+ let item = obj[key];
28
+ while (item && typeof item === 'object' && item[rawSymbol]) {
29
+ item = item[rawSymbol];
30
+ }
31
+ if (item && typeof item === 'object') {
32
+ cleanProxies(item, seen);
33
+ }
34
+ obj[key] = item;
35
+ }
36
+ }
37
+ return obj;
38
+ }
5
39
  /**
6
40
  * Reads the raw value of the object, that is, not proxied object.
7
41
  * @param source The source object that contains the object
@@ -9,21 +43,28 @@ const rawSymbol = Symbol('raw');
9
43
  * @returns The not proxied object or undefined
10
44
  */
11
45
  export function toRaw(source, target) {
46
+ let mapped;
12
47
  if (target && target[rawSymbol]) {
13
48
  let raw = target[rawSymbol];
14
49
  while (raw && raw[rawSymbol]) {
15
50
  raw = raw[rawSymbol];
16
51
  }
17
- return raw;
18
- }
19
- const proxies = Reflect.get(source, proxySymbol);
20
- if (!proxies) {
21
- return undefined;
52
+ mapped = raw;
22
53
  }
23
- for (const [key, value] of proxies.entries()) {
24
- if (value === target) {
25
- return key;
54
+ else {
55
+ const proxies = Reflect.get(source, proxySymbol);
56
+ if (!proxies) {
57
+ return undefined;
26
58
  }
59
+ for (const [key, value] of proxies.entries()) {
60
+ if (value === target) {
61
+ mapped = key;
62
+ break;
63
+ }
64
+ }
65
+ }
66
+ if (mapped) {
67
+ return cleanProxies(mapped);
27
68
  }
28
69
  }
29
70
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"observed.js","sourceRoot":"","sources":["../../../src/decorators/observed.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nconst reactiveSymbol = Symbol('reactive')\nconst proxySymbol = Symbol('proxy')\nconst rawSymbol = Symbol('raw')\n\ninterface DomainInstance {\n domain?: { notifyChange(): void }\n notifyChange?: () => void\n}\n\nexport interface PropertyDecorator {\n // accessor decorator signature\n <C extends DomainInstance, V>(\n target: ClassAccessorDecoratorTarget<C, V>,\n context: ClassAccessorDecoratorContext<C, V>\n ): ClassAccessorDecoratorResult<C, V>\n // setter decorator signature\n <C extends DomainInstance, V>(\n target: (value: V) => void,\n context: ClassSetterDecoratorContext<C, V>\n ): (this: C, value: V) => void\n}\n\ntype StandardPropertyContext<C, V> = ClassAccessorDecoratorContext<C, V> | ClassSetterDecoratorContext<C, V>\ntype StandardPropertyTarget<C, V> = ClassAccessorDecoratorTarget<C, V> | ((value: V) => void)\n\nexport interface ObserveConfig {\n /**\n * To be used when observing an object and not a primitive.\n * It creates a proxy that observes changes in the object.\n */\n deep?: boolean\n}\n\n/**\n * Reads the raw value of the object, that is, not proxied object.\n * @param source The source object that contains the object\n * @param target The target object set on the source object\n * @returns The not proxied object or undefined\n */\nexport function toRaw<T extends object = object>(source: object, target: T): T | undefined {\n if (target && (target as any)[rawSymbol]) {\n let raw = (target as any)[rawSymbol]\n while (raw && (raw as any)[rawSymbol]) {\n raw = (raw as any)[rawSymbol]\n }\n return raw as T\n }\n const proxies = Reflect.get(source, proxySymbol) as Map<object, object>\n if (!proxies) {\n return undefined\n }\n for (const [key, value] of proxies.entries()) {\n if (value === target) {\n return key as T\n }\n }\n}\n\n/**\n * Turns a class property or a setter into an observed property\n * that notifies the root domain when changed.\n *\n * A property has to be declared with the `accessor` type to be\n * observed.\n *\n * ```typescript\n * @observed() accessor name: string | undefined\n *\n * @observed()\n * set height(value: number) {\n * this.#height = value\n * }\n *\n * get height(): number {\n * return this.#height\n * }\n * ```\n *\n * The decorator can be used in the following ways:\n * - As a class property decorator\n * - As a class setter decorator\n *\n * The property class either has to have the `domain` property\n * or a `notifyChange` method. The decorator will call the\n * `notifyChange` method if it exists. Otherwise, it will\n * call the `notifyChange` method of the root domain (the `domain` property).\n */\nexport function observed(config: ObserveConfig = {}): PropertyDecorator {\n return <C extends DomainInstance, V>(\n target: StandardPropertyTarget<C, V>,\n context: StandardPropertyContext<C, V>\n ): any => {\n const { kind } = context\n const { deep } = config\n\n function createDeepProxy(this: DomainInstance, obj: unknown, notifyChange: () => void): any {\n if (typeof obj !== 'object' || obj === null) {\n return obj\n }\n // instead of using the target object to store the proxy info, we\n // reflect the proxy info to the object itself. This way we can\n // keep the stored values clean, which helps with testing (deep equal would include symbols)\n // Keys are original objects, values are proxies\n let proxies = Reflect.get(this, proxySymbol) as Map<object, object>\n if (!proxies) {\n proxies = new Map()\n Reflect.set(this, proxySymbol, proxies)\n }\n\n if (proxies.has(obj)) {\n return proxies.get(obj)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const targetObject = this\n\n const proxy = new Proxy(obj, {\n get(target, prop) {\n if (prop === proxySymbol) {\n return Reflect.get(target, prop)\n }\n if (prop === rawSymbol) {\n return target\n }\n const value = Reflect.get(target, prop)\n return createDeepProxy.bind(targetObject)(value, notifyChange)\n },\n set(target, prop, value) {\n const oldValue = Reflect.get(target, prop)\n if (oldValue !== value) {\n Reflect.set(target, prop, value)\n notifyChange()\n }\n return true\n },\n deleteProperty(target, prop) {\n Reflect.deleteProperty(target, prop)\n notifyChange()\n return true\n },\n })\n proxies.set(obj, proxy)\n return proxy\n }\n\n if (kind === 'accessor') {\n return {\n set(this: DomainInstance, value: V): void {\n let map = Reflect.get(this, reactiveSymbol)\n if (!map) {\n map = {}\n Reflect.set(this, reactiveSymbol, map)\n }\n if (map[context.name] === value) {\n return\n }\n const notify = () => {\n if (this.domain) {\n this.domain.notifyChange()\n } else if (this.notifyChange) {\n this.notifyChange()\n }\n }\n if (deep) {\n value = createDeepProxy.bind(this)(value, notify)\n }\n if (value === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete map[context.name]\n } else {\n map[context.name] = value\n }\n notify()\n },\n\n get(): V {\n const map = Reflect.get(this, reactiveSymbol) || {}\n return map[context.name]\n },\n }\n } else if (kind === 'setter') {\n const { name } = context\n return function (this: DomainInstance, value: V): void {\n const oldValue = this[name as keyof DomainInstance]\n if (value === oldValue) {\n return\n }\n const notify = () => {\n if (this.domain) {\n this.domain.notifyChange()\n } else if (this.notifyChange) {\n this.notifyChange()\n }\n }\n ;(target as (value: V) => void).call(this, value)\n notify()\n }\n }\n throw new Error(`Unsupported decorator location: ${kind}`)\n }\n}\n\n/**\n * A decorator that can be used to retarget the change event\n * of a property to the root domain.\n *\n * This decorator should not be used with the `observed` decorator.\n * It does the same thing. It will notify about a change to the\n * property itself.\n */\nexport function retargetChange() {\n return <C extends DomainInstance, V extends EventTarget | undefined>(\n target: StandardPropertyTarget<C, V>,\n context: StandardPropertyContext<C, V>\n ): any => {\n const { kind } = context\n function observer(this: DomainInstance) {\n if (this.domain) {\n this.domain.notifyChange()\n }\n }\n let binding: ((this: DomainInstance) => void) | undefined\n if (kind === 'accessor') {\n return {\n set(this: DomainInstance, value: V): void {\n let map = Reflect.get(this, reactiveSymbol)\n if (!map) {\n map = {}\n Reflect.set(this, reactiveSymbol, map)\n }\n if (map[context.name] === value) {\n return\n }\n const oldValue = map[context.name]\n if (oldValue === value) {\n return\n }\n if (value === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete map[context.name]\n } else {\n map[context.name] = value\n }\n if (oldValue && binding) {\n oldValue.removeEventListener('change', binding)\n }\n if (value) {\n binding = observer.bind(this)\n value.addEventListener('change', binding)\n }\n if (this.domain) {\n this.domain.notifyChange()\n }\n },\n\n get(): V {\n const map = Reflect.get(this, reactiveSymbol) || {}\n return map[context.name]\n },\n }\n } else if (kind === 'setter') {\n const { name } = context\n return function (this: DomainInstance, value: V): void {\n const oldValue = this[name as keyof DomainInstance] as unknown as V\n if (value === oldValue) {\n return\n }\n ;(target as (value: V) => void).call(this, value)\n if (oldValue && binding) {\n oldValue.removeEventListener('change', binding)\n }\n if (value) {\n binding = observer.bind(this)\n value.addEventListener('change', binding)\n }\n }\n }\n throw new Error(`Unsupported decorator location: ${kind}`)\n }\n}\n"]}
1
+ {"version":3,"file":"observed.js","sourceRoot":"","sources":["../../../src/decorators/observed.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nconst reactiveSymbol = Symbol('reactive')\nconst proxySymbol = Symbol('proxy')\nconst rawSymbol = Symbol('raw')\n\ninterface DomainInstance {\n domain?: { notifyChange(): void }\n notifyChange?: () => void\n}\n\nexport interface PropertyDecorator {\n // accessor decorator signature\n <C extends DomainInstance, V>(\n target: ClassAccessorDecoratorTarget<C, V>,\n context: ClassAccessorDecoratorContext<C, V>\n ): ClassAccessorDecoratorResult<C, V>\n // setter decorator signature\n <C extends DomainInstance, V>(\n target: (value: V) => void,\n context: ClassSetterDecoratorContext<C, V>\n ): (this: C, value: V) => void\n}\n\ntype StandardPropertyContext<C, V> = ClassAccessorDecoratorContext<C, V> | ClassSetterDecoratorContext<C, V>\ntype StandardPropertyTarget<C, V> = ClassAccessorDecoratorTarget<C, V> | ((value: V) => void)\n\nexport interface ObserveConfig {\n /**\n * To be used when observing an object and not a primitive.\n * It creates a proxy that observes changes in the object.\n */\n deep?: boolean\n}\n\nfunction cleanProxies(obj: any, seen: WeakSet<object> = new WeakSet<object>()): any {\n if (typeof obj !== 'object' || obj === null) {\n return obj\n }\n if (seen.has(obj)) {\n return obj\n }\n seen.add(obj)\n\n if (Array.isArray(obj)) {\n for (let i = 0; i < obj.length; i++) {\n let item = obj[i]\n while (item && typeof item === 'object' && item[rawSymbol]) {\n item = item[rawSymbol]\n }\n if (item && typeof item === 'object') {\n cleanProxies(item, seen)\n }\n obj[i] = item\n }\n } else {\n for (const key of Object.keys(obj)) {\n let item = obj[key]\n while (item && typeof item === 'object' && item[rawSymbol]) {\n item = item[rawSymbol]\n }\n if (item && typeof item === 'object') {\n cleanProxies(item, seen)\n }\n obj[key] = item\n }\n }\n return obj\n}\n\n/**\n * Reads the raw value of the object, that is, not proxied object.\n * @param source The source object that contains the object\n * @param target The target object set on the source object\n * @returns The not proxied object or undefined\n */\nexport function toRaw<T extends object = object>(source: object, target: T): T | undefined {\n let mapped: any\n if (target && (target as any)[rawSymbol]) {\n let raw = (target as any)[rawSymbol]\n while (raw && (raw as any)[rawSymbol]) {\n raw = (raw as any)[rawSymbol]\n }\n mapped = raw\n } else {\n const proxies = Reflect.get(source, proxySymbol) as Map<object, object>\n if (!proxies) {\n return undefined\n }\n for (const [key, value] of proxies.entries()) {\n if (value === target) {\n mapped = key\n break\n }\n }\n }\n\n if (mapped) {\n return cleanProxies(mapped) as T\n }\n}\n\n/**\n * Turns a class property or a setter into an observed property\n * that notifies the root domain when changed.\n *\n * A property has to be declared with the `accessor` type to be\n * observed.\n *\n * ```typescript\n * @observed() accessor name: string | undefined\n *\n * @observed()\n * set height(value: number) {\n * this.#height = value\n * }\n *\n * get height(): number {\n * return this.#height\n * }\n * ```\n *\n * The decorator can be used in the following ways:\n * - As a class property decorator\n * - As a class setter decorator\n *\n * The property class either has to have the `domain` property\n * or a `notifyChange` method. The decorator will call the\n * `notifyChange` method if it exists. Otherwise, it will\n * call the `notifyChange` method of the root domain (the `domain` property).\n */\nexport function observed(config: ObserveConfig = {}): PropertyDecorator {\n return <C extends DomainInstance, V>(\n target: StandardPropertyTarget<C, V>,\n context: StandardPropertyContext<C, V>\n ): any => {\n const { kind } = context\n const { deep } = config\n\n function createDeepProxy(this: DomainInstance, obj: unknown, notifyChange: () => void): any {\n if (typeof obj !== 'object' || obj === null) {\n return obj\n }\n // instead of using the target object to store the proxy info, we\n // reflect the proxy info to the object itself. This way we can\n // keep the stored values clean, which helps with testing (deep equal would include symbols)\n // Keys are original objects, values are proxies\n let proxies = Reflect.get(this, proxySymbol) as Map<object, object>\n if (!proxies) {\n proxies = new Map()\n Reflect.set(this, proxySymbol, proxies)\n }\n\n if (proxies.has(obj)) {\n return proxies.get(obj)\n }\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const targetObject = this\n\n const proxy = new Proxy(obj, {\n get(target, prop) {\n if (prop === proxySymbol) {\n return Reflect.get(target, prop)\n }\n if (prop === rawSymbol) {\n return target\n }\n const value = Reflect.get(target, prop)\n return createDeepProxy.bind(targetObject)(value, notifyChange)\n },\n set(target, prop, value) {\n const oldValue = Reflect.get(target, prop)\n if (oldValue !== value) {\n Reflect.set(target, prop, value)\n notifyChange()\n }\n return true\n },\n deleteProperty(target, prop) {\n Reflect.deleteProperty(target, prop)\n notifyChange()\n return true\n },\n })\n proxies.set(obj, proxy)\n return proxy\n }\n\n if (kind === 'accessor') {\n return {\n set(this: DomainInstance, value: V): void {\n let map = Reflect.get(this, reactiveSymbol)\n if (!map) {\n map = {}\n Reflect.set(this, reactiveSymbol, map)\n }\n if (map[context.name] === value) {\n return\n }\n const notify = () => {\n if (this.domain) {\n this.domain.notifyChange()\n } else if (this.notifyChange) {\n this.notifyChange()\n }\n }\n if (deep) {\n value = createDeepProxy.bind(this)(value, notify)\n }\n if (value === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete map[context.name]\n } else {\n map[context.name] = value\n }\n notify()\n },\n\n get(): V {\n const map = Reflect.get(this, reactiveSymbol) || {}\n return map[context.name]\n },\n }\n } else if (kind === 'setter') {\n const { name } = context\n return function (this: DomainInstance, value: V): void {\n const oldValue = this[name as keyof DomainInstance]\n if (value === oldValue) {\n return\n }\n const notify = () => {\n if (this.domain) {\n this.domain.notifyChange()\n } else if (this.notifyChange) {\n this.notifyChange()\n }\n }\n ;(target as (value: V) => void).call(this, value)\n notify()\n }\n }\n throw new Error(`Unsupported decorator location: ${kind}`)\n }\n}\n\n/**\n * A decorator that can be used to retarget the change event\n * of a property to the root domain.\n *\n * This decorator should not be used with the `observed` decorator.\n * It does the same thing. It will notify about a change to the\n * property itself.\n */\nexport function retargetChange() {\n return <C extends DomainInstance, V extends EventTarget | undefined>(\n target: StandardPropertyTarget<C, V>,\n context: StandardPropertyContext<C, V>\n ): any => {\n const { kind } = context\n function observer(this: DomainInstance) {\n if (this.domain) {\n this.domain.notifyChange()\n }\n }\n let binding: ((this: DomainInstance) => void) | undefined\n if (kind === 'accessor') {\n return {\n set(this: DomainInstance, value: V): void {\n let map = Reflect.get(this, reactiveSymbol)\n if (!map) {\n map = {}\n Reflect.set(this, reactiveSymbol, map)\n }\n if (map[context.name] === value) {\n return\n }\n const oldValue = map[context.name]\n if (oldValue === value) {\n return\n }\n if (value === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete map[context.name]\n } else {\n map[context.name] = value\n }\n if (oldValue && binding) {\n oldValue.removeEventListener('change', binding)\n }\n if (value) {\n binding = observer.bind(this)\n value.addEventListener('change', binding)\n }\n if (this.domain) {\n this.domain.notifyChange()\n }\n },\n\n get(): V {\n const map = Reflect.get(this, reactiveSymbol) || {}\n return map[context.name]\n },\n }\n } else if (kind === 'setter') {\n const { name } = context\n return function (this: DomainInstance, value: V): void {\n const oldValue = this[name as keyof DomainInstance] as unknown as V\n if (value === oldValue) {\n return\n }\n ;(target as (value: V) => void).call(this, value)\n if (oldValue && binding) {\n oldValue.removeEventListener('change', binding)\n }\n if (value) {\n binding = observer.bind(this)\n value.addEventListener('change', binding)\n }\n }\n }\n throw new Error(`Unsupported decorator location: ${kind}`)\n }\n}\n"]}
@@ -8,6 +8,7 @@ import { Trash } from './lib/Trash.js';
8
8
  import { Patch } from './lib/Patch.js';
9
9
  import { DataCatalog } from './lib/DataCatalog.js';
10
10
  import { Permission } from './lib/Permission.js';
11
+ import { Ai } from './lib/Ai.js';
11
12
  export declare class ModelingMock {
12
13
  faker: Faker;
13
14
  organization: Organization;
@@ -19,5 +20,6 @@ export declare class ModelingMock {
19
20
  patch: Patch;
20
21
  dataCatalog: DataCatalog;
21
22
  permission: Permission;
23
+ ai: Ai;
22
24
  }
23
25
  //# sourceMappingURL=ModelingMock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelingMock.d.ts","sourceRoot":"","sources":["../../../src/mocking/ModelingMock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,qBAAa,YAAY;IACvB,KAAK,EAAE,KAAK,CAAQ;IACpB,YAAY,eAAqB;IACjC,KAAK,QAAc;IACnB,KAAK,OAAa;IAClB,KAAK,OAAa;IAClB,UAAU,aAAmB;IAC7B,KAAK,QAAc;IACnB,KAAK,QAAc;IACnB,WAAW,cAAoB;IAC/B,UAAU,aAAmB;CAC9B"}
1
+ {"version":3,"file":"ModelingMock.d.ts","sourceRoot":"","sources":["../../../src/mocking/ModelingMock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAEhC,qBAAa,YAAY;IACvB,KAAK,EAAE,KAAK,CAAQ;IACpB,YAAY,eAAqB;IACjC,KAAK,QAAc;IACnB,KAAK,OAAa;IAClB,KAAK,OAAa;IAClB,UAAU,aAAmB;IAC7B,KAAK,QAAc;IACnB,KAAK,QAAc;IACnB,WAAW,cAAoB;IAC/B,UAAU,aAAmB;IAC7B,EAAE,KAAW;CACd"}
@@ -8,6 +8,7 @@ import { Trash } from './lib/Trash.js';
8
8
  import { Patch } from './lib/Patch.js';
9
9
  import { DataCatalog } from './lib/DataCatalog.js';
10
10
  import { Permission } from './lib/Permission.js';
11
+ import { Ai } from './lib/Ai.js';
11
12
  export class ModelingMock {
12
13
  faker = faker;
13
14
  organization = new Organization();
@@ -19,5 +20,6 @@ export class ModelingMock {
19
20
  patch = new Patch();
20
21
  dataCatalog = new DataCatalog();
21
22
  permission = new Permission();
23
+ ai = new Ai();
22
24
  }
23
25
  //# sourceMappingURL=ModelingMock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelingMock.js","sourceRoot":"","sources":["../../../src/mocking/ModelingMock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,MAAM,OAAO,YAAY;IACvB,KAAK,GAAU,KAAK,CAAA;IACpB,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA;IACjC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IACnB,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;IAClB,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;IAClB,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;IAC7B,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IACnB,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IACnB,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;IAC/B,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;CAC9B","sourcesContent":["import { faker, type Faker } from '@faker-js/faker'\nimport { Organization } from './lib/Organization.js'\nimport { Group } from './lib/Group.js'\nimport { User } from './lib/User.js'\nimport { File } from './lib/File.js'\nimport { Invitation } from './lib/Invitation.js'\nimport { Trash } from './lib/Trash.js'\nimport { Patch } from './lib/Patch.js'\nimport { DataCatalog } from './lib/DataCatalog.js'\nimport { Permission } from './lib/Permission.js'\n\nexport class ModelingMock {\n faker: Faker = faker\n organization = new Organization()\n group = new Group()\n users = new User()\n files = new File()\n invitation = new Invitation()\n trash = new Trash()\n patch = new Patch()\n dataCatalog = new DataCatalog()\n permission = new Permission()\n}\n"]}
1
+ {"version":3,"file":"ModelingMock.js","sourceRoot":"","sources":["../../../src/mocking/ModelingMock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AAEhC,MAAM,OAAO,YAAY;IACvB,KAAK,GAAU,KAAK,CAAA;IACpB,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA;IACjC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IACnB,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;IAClB,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;IAClB,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;IAC7B,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IACnB,KAAK,GAAG,IAAI,KAAK,EAAE,CAAA;IACnB,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA;IAC/B,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;IAC7B,EAAE,GAAG,IAAI,EAAE,EAAE,CAAA;CACd","sourcesContent":["import { faker, type Faker } from '@faker-js/faker'\nimport { Organization } from './lib/Organization.js'\nimport { Group } from './lib/Group.js'\nimport { User } from './lib/User.js'\nimport { File } from './lib/File.js'\nimport { Invitation } from './lib/Invitation.js'\nimport { Trash } from './lib/Trash.js'\nimport { Patch } from './lib/Patch.js'\nimport { DataCatalog } from './lib/DataCatalog.js'\nimport { Permission } from './lib/Permission.js'\nimport { Ai } from './lib/Ai.js'\n\nexport class ModelingMock {\n faker: Faker = faker\n organization = new Organization()\n group = new Group()\n users = new User()\n files = new File()\n invitation = new Invitation()\n trash = new Trash()\n patch = new Patch()\n dataCatalog = new DataCatalog()\n permission = new Permission()\n ai = new Ai()\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { type Faker } from '@faker-js/faker';
2
+ import type { AiSessionSchema, AiSessionApp } from '../../models/AiSession.js';
3
+ import type { AiMessageSchema, AiMessageRole } from '../../models/AiMessage.js';
4
+ export declare class Ai {
5
+ faker: Faker;
6
+ session(app?: AiSessionApp, init?: Partial<AiSessionSchema>): AiSessionSchema;
7
+ sessions(app?: AiSessionApp, count?: number): AiSessionSchema[];
8
+ message(role?: AiMessageRole, init?: Partial<AiMessageSchema>): AiMessageSchema;
9
+ messages(count?: number, session?: string): AiMessageSchema[];
10
+ }
11
+ //# sourceMappingURL=Ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ai.d.ts","sourceRoot":"","sources":["../../../../src/mocking/lib/Ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC9E,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EAId,MAAM,2BAA2B,CAAA;AAGlC,qBAAa,EAAE;IACb,KAAK,EAAE,KAAK,CAAQ;IAEpB,OAAO,CAAC,GAAG,GAAE,YAAwB,EAAE,IAAI,GAAE,OAAO,CAAC,eAAe,CAAM,GAAG,eAAe;IAa5F,QAAQ,CAAC,GAAG,GAAE,YAAwB,EAAE,KAAK,SAAI,GAAG,eAAe,EAAE;IAIrE,OAAO,CAAC,IAAI,GAAE,aAAsB,EAAE,IAAI,GAAE,OAAO,CAAC,eAAe,CAAM,GAAG,eAAe;IAiC3F,QAAQ,CAAC,KAAK,SAAI,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE;CAKzD"}
@@ -0,0 +1,53 @@
1
+ import { faker } from '@faker-js/faker';
2
+ import { nanoid } from '../../nanoid.js';
3
+ import { AiSessionKind, AiMessageKind } from '../../models/kinds.js';
4
+ export class Ai {
5
+ faker = faker;
6
+ session(app = 'general', init = {}) {
7
+ return {
8
+ kind: AiSessionKind,
9
+ key: init.key ?? nanoid(),
10
+ app: init.app ?? app,
11
+ title: init.title ?? this.faker.lorem.words({ min: 2, max: 4 }),
12
+ pinned: init.pinned ?? this.faker.datatype.boolean(),
13
+ userRenamed: init.userRenamed ?? this.faker.datatype.boolean(),
14
+ createdAt: init.createdAt ?? this.faker.date.recent().getTime(),
15
+ updatedAt: init.updatedAt ?? this.faker.date.recent().getTime(),
16
+ };
17
+ }
18
+ sessions(app = 'general', count = 5) {
19
+ return Array.from({ length: count }, () => this.session(app));
20
+ }
21
+ message(role = 'user', init = {}) {
22
+ const isUser = role === 'user';
23
+ const baseMessage = {
24
+ kind: AiMessageKind,
25
+ key: init.key ?? nanoid(),
26
+ session: init.session ?? nanoid(),
27
+ createdAt: init.createdAt ?? this.faker.date.recent().getTime(),
28
+ updatedAt: init.updatedAt ?? this.faker.date.recent().getTime(),
29
+ text: init.text ?? this.faker.lorem.paragraph(),
30
+ role: 'user',
31
+ };
32
+ if (isUser) {
33
+ return {
34
+ ...baseMessage,
35
+ state: 'complete',
36
+ ...init,
37
+ };
38
+ }
39
+ return {
40
+ ...baseMessage,
41
+ role: 'model',
42
+ state: init.state ??
43
+ this.faker.helpers.arrayElement(['loading', 'complete', 'error', 'terminated']),
44
+ applied: init.applied ?? this.faker.datatype.boolean(),
45
+ thoughts: init.thoughts ?? this.faker.lorem.sentences(),
46
+ ...init,
47
+ };
48
+ }
49
+ messages(count = 5, session) {
50
+ return Array.from({ length: count }, () => this.message(this.faker.helpers.arrayElement(['user', 'model']), session ? { session } : {}));
51
+ }
52
+ }
53
+ //# sourceMappingURL=Ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Ai.js","sourceRoot":"","sources":["../../../../src/mocking/lib/Ai.ts"],"names":[],"mappings":"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","sourcesContent":["import { faker, type Faker } from '@faker-js/faker'\nimport { nanoid } from '../../nanoid.js'\nimport type { AiSessionSchema, AiSessionApp } from '../../models/AiSession.js'\nimport type {\n AiMessageSchema,\n AiMessageRole,\n AiMessageState,\n AiMessageSchemaBase,\n AiModelMessageSchema,\n} from '../../models/AiMessage.js'\nimport { AiSessionKind, AiMessageKind } from '../../models/kinds.js'\n\nexport class Ai {\n faker: Faker = faker\n\n session(app: AiSessionApp = 'general', init: Partial<AiSessionSchema> = {}): AiSessionSchema {\n return {\n kind: AiSessionKind,\n key: init.key ?? nanoid(),\n app: init.app ?? app,\n title: init.title ?? this.faker.lorem.words({ min: 2, max: 4 }),\n pinned: init.pinned ?? this.faker.datatype.boolean(),\n userRenamed: init.userRenamed ?? this.faker.datatype.boolean(),\n createdAt: init.createdAt ?? this.faker.date.recent().getTime(),\n updatedAt: init.updatedAt ?? this.faker.date.recent().getTime(),\n }\n }\n\n sessions(app: AiSessionApp = 'general', count = 5): AiSessionSchema[] {\n return Array.from({ length: count }, () => this.session(app))\n }\n\n message(role: AiMessageRole = 'user', init: Partial<AiMessageSchema> = {}): AiMessageSchema {\n const isUser = role === 'user'\n\n const baseMessage: AiMessageSchemaBase = {\n kind: AiMessageKind,\n key: init.key ?? nanoid(),\n session: init.session ?? nanoid(),\n createdAt: init.createdAt ?? this.faker.date.recent().getTime(),\n updatedAt: init.updatedAt ?? this.faker.date.recent().getTime(),\n text: init.text ?? this.faker.lorem.paragraph(),\n role: 'user',\n } as const\n\n if (isUser) {\n return {\n ...baseMessage,\n state: 'complete',\n ...init,\n } as AiMessageSchema\n }\n\n return {\n ...baseMessage,\n role: 'model',\n state:\n init.state ??\n this.faker.helpers.arrayElement(['loading', 'complete', 'error', 'terminated'] as AiMessageState[]),\n applied: (init as AiModelMessageSchema).applied ?? this.faker.datatype.boolean(),\n thoughts: (init as AiModelMessageSchema).thoughts ?? this.faker.lorem.sentences(),\n ...init,\n } as AiMessageSchema\n }\n\n messages(count = 5, session?: string): AiMessageSchema[] {\n return Array.from({ length: count }, () =>\n this.message(this.faker.helpers.arrayElement(['user', 'model']), session ? { session } : {})\n )\n }\n}\n"]}
@@ -0,0 +1,146 @@
1
+ import type { DataDomain } from '@api-client/core/modeling/DataDomain.js';
2
+ import type { AiDomainAssociation, AiDomainAssociationDelta, AiDomainDelta, AiDomainEntityResponseSchema, AiDomainProperty, AiDomainPropertyDelta, AiDomainSemantic } from './types.js';
3
+ import type { DomainAssociation, DomainEntity, DomainModel, DomainProperty } from '@api-client/core/modeling/index.js';
4
+ import { type SemanticType } from '@api-client/core/modeling/Semantics.js';
5
+ /**
6
+ * A utility class responsible for applying AI-generated modifications (deltas)
7
+ * to an existing `DataDomain` model. It handles adding, modifying, and deleting
8
+ * entities, properties, associations, semantics, and models based on the
9
+ * prescribed changes.
10
+ *
11
+ * It also maintains a mapping of AI-generated provisional keys to the
12
+ * actual nanoid keys used within the data domain to ensure references remain intact.
13
+ */
14
+ export declare class DataDomainDelta {
15
+ /**
16
+ * The data domain to which the delta will be applied.
17
+ */
18
+ protected domain: DataDomain;
19
+ /**
20
+ * The map containing the mappings of AI generated keys to proper nanoids.
21
+ */
22
+ protected keyMap: Map<string, string>;
23
+ /**
24
+ * Initializes a new instance of the `DataDomainDelta` class.
25
+ *
26
+ * @param domain The target data domain where changes will be applied.
27
+ * @param keyMap An optional map tracking AI-generated provisional keys to actual domain nanoids.
28
+ */
29
+ constructor(domain: DataDomain, keyMap?: Map<string, string>);
30
+ /**
31
+ * Applies the entire given delta structure to the data domain in a single pass.
32
+ * Operations include processing added/modified/deleted components across
33
+ * models, entities, properties, associations, and semantics.
34
+ *
35
+ * @param delta The AI-generated delta schema containing all requested changes.
36
+ */
37
+ apply(delta: AiDomainDelta): void;
38
+ /**
39
+ * Internal handler to add a new entity to the data domain based on the provided schema.
40
+ * It also recursively handles adding the entity's semantics, properties, and associations.
41
+ *
42
+ * @param domain The data domain where the entity will reside.
43
+ * @param e The schema definition of the entity to be added.
44
+ */
45
+ protected handleAddEntity(domain: DataDomain, e: AiDomainEntityResponseSchema): void;
46
+ /**
47
+ * Processes an array of newly added properties for a specific entity.
48
+ *
49
+ * @param entity The target domain entity to receive the new properties.
50
+ * @param adds The list of property definitions to add, if any.
51
+ */
52
+ protected handlePropertyAdds(entity: DomainEntity, adds?: AiDomainProperty[]): void;
53
+ /**
54
+ * Internal handler to add a single property to an entity, generating keys
55
+ * and applying semantics as defined in the AI schema.
56
+ *
57
+ * @param entity The target domain entity.
58
+ * @param p The schema definition of the property to add.
59
+ */
60
+ protected handleAddProperty(entity: DomainEntity, p: AiDomainProperty): void;
61
+ /**
62
+ * Processes the deletion of properties by their keys from the given domain.
63
+ * Fails silently if a key is not found, maintaining fault tolerance.
64
+ *
65
+ * @param domain The target data domain.
66
+ * @param keys The array of property keys (AI-generated or actual) to remove.
67
+ */
68
+ handlePropertyDeletes(domain: DataDomain, keys?: string[]): void;
69
+ /**
70
+ * Processes modifications to existing properties within the domain, updating
71
+ * specific metadata, constraints, schema rules, and semantics based on the delta.
72
+ *
73
+ * @param domain The target data domain.
74
+ * @param mods The list of property modifications to apply.
75
+ */
76
+ handlePropertyMods(domain: DataDomain, mods?: AiDomainPropertyDelta[]): void;
77
+ /**
78
+ * Processes an array of newly added associations for a specific entity.
79
+ *
80
+ * @param entity The target domain entity referencing the newly created associations.
81
+ * @param adds An array of association definitions to add, if any.
82
+ */
83
+ handleAssociationAdds(entity: DomainEntity, adds: AiDomainAssociation[] | undefined): void;
84
+ /**
85
+ * Internal handler to append a single association to an entity, effectively creating
86
+ * a relationship to one or more targets. Attempts an optimized exact O(1) loopup
87
+ * before falling back to a full domain search.
88
+ *
89
+ * @param entity The source domain entity creating the association.
90
+ * @param a The defining schema for the new association.
91
+ */
92
+ handleAddAssociation(entity: DomainEntity, a: AiDomainAssociation): void;
93
+ /**
94
+ * Processes the deletion of associations by their keys from the given domain.
95
+ * Safely ignores errors if the specified association does not exist.
96
+ *
97
+ * @param domain The target data domain.
98
+ * @param keys An array of association keys to safely remove.
99
+ */
100
+ handleAssociationDeletes(domain: DataDomain, keys?: string[]): void;
101
+ /**
102
+ * Processes modifications to existing associations within the domain.
103
+ * Updates attributes, semantics, and handles adding/replacing association targets.
104
+ *
105
+ * @param domain The target data domain containing the associations.
106
+ * @param mods An array of requested association modifications.
107
+ */
108
+ handleAssociationMods(domain: DataDomain, mods: AiDomainAssociationDelta[] | undefined): void;
109
+ /**
110
+ * Retrieves an existing `DomainModel` by its given key. If the model
111
+ * does not exist in the domain (e.g., AI generated a brand new model name natively),
112
+ * a newly instantiated one is created and registered within the domain automatically.
113
+ *
114
+ * @param domain The target data domain.
115
+ * @param modelKey The AI-suggested or actual nanoid key of the model.
116
+ * @returns The resolved or newly created `DomainModel`.
117
+ */
118
+ protected getModel(domain: DataDomain, modelKey: string): DomainModel;
119
+ /**
120
+ * Helper function to batch apply semantic patches (add, modify, delete)
121
+ * to a specific domain component (Entity, Property, or Association).
122
+ * Validates semantic scopes heavily before applying.
123
+ *
124
+ * @param target The domain element (Entity, Property, Association) to receive the semantics.
125
+ * @param added List of semantic blocks to newly append.
126
+ * @param modified List of existing semantics to override/update.
127
+ * @param deleted Array of semantic IDs indicating removals.
128
+ */
129
+ protected applySemantics(target: DomainEntity | DomainProperty | DomainAssociation, added?: AiDomainSemantic[], modified?: AiDomainSemantic[], deleted?: SemanticType[]): void;
130
+ /**
131
+ * Forces the given semantic ID to follow the structured format `Semantic#{id}`.
132
+ *
133
+ * @param id The raw semantic string given by the LLM/Delta payload.
134
+ * @returns The corrected semantic ID structured for internal parsing.
135
+ */
136
+ protected ensureSemanticId(id: string): SemanticType;
137
+ /**
138
+ * Normalizes the delta by removing duplicates. For example, when the model
139
+ * adds an entity more than once to the `modifiedEntities` array, this will merge all the changes
140
+ * into a single entity.
141
+ * @param delta The delta to normalize.
142
+ * @returns The normalized delta.
143
+ */
144
+ static normalize(delta: AiDomainDelta): AiDomainDelta;
145
+ }
146
+ //# sourceMappingURL=DataDomainDelta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataDomainDelta.d.ts","sourceRoot":"","sources":["../../../../src/modeling/ai/DataDomainDelta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAA;AACzE,OAAO,KAAK,EAEV,mBAAmB,EACnB,wBAAwB,EACxB,aAAa,EAEb,4BAA4B,EAC5B,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EAEZ,WAAW,EACX,cAAc,EACf,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAAE,KAAK,YAAY,EAAgC,MAAM,wCAAwC,CAAA;AAmCxG;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,UAAU,CAAA;IAE5B;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAErC;;;;;OAKG;gBACS,MAAM,EAAE,UAAU,EAAE,MAAM,sBAA4B;IAKlE;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAmFjC;;;;;;OAMG;IACH,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,4BAA4B,GAAG,IAAI;IAiCpF;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,gBAAgB,EAAE,GAAG,IAAI;IASnF;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,GAAG,IAAI;IA8B5E;;;;;;OAMG;IACH,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAchE;;;;;;OAMG;IACH,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,qBAAqB,EAAE,GAAG,IAAI;IA+F5E;;;;;OAKG;IACH,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,SAAS,GAAG,IAAI;IAS1F;;;;;;;OAOG;IACH,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAgDxE;;;;;;OAMG;IACH,wBAAwB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAcnE;;;;;;OAMG;IACH,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,wBAAwB,EAAE,GAAG,SAAS,GAAG,IAAI;IA+D7F;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IAYrE;;;;;;;;;OASG;IACH,SAAS,CAAC,cAAc,CACtB,MAAM,EAAE,YAAY,GAAG,cAAc,GAAG,iBAAiB,EACzD,KAAK,CAAC,EAAE,gBAAgB,EAAE,EAC1B,QAAQ,CAAC,EAAE,gBAAgB,EAAE,EAC7B,OAAO,CAAC,EAAE,YAAY,EAAE,GACvB,IAAI;IAmDP;;;;;OAKG;IACH,SAAS,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY;IAQpD;;;;;;OAMG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa;CAwItD"}