@rahul_vendure/ai-chat-plugin 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +214 -0
  2. package/dist/ai-assistant.plugin.d.ts +18 -0
  3. package/dist/ai-assistant.plugin.d.ts.map +1 -0
  4. package/dist/ai-assistant.plugin.js +86 -0
  5. package/dist/ai-assistant.plugin.js.map +1 -0
  6. package/dist/api/ai-assistant.resolver.d.ts +11 -0
  7. package/dist/api/ai-assistant.resolver.d.ts.map +1 -0
  8. package/dist/api/ai-assistant.resolver.js +43 -0
  9. package/dist/api/ai-assistant.resolver.js.map +1 -0
  10. package/dist/api/schema-extensions.d.ts +3 -0
  11. package/dist/api/schema-extensions.d.ts.map +1 -0
  12. package/dist/api/schema-extensions.js +15 -0
  13. package/dist/api/schema-extensions.js.map +1 -0
  14. package/dist/constants.d.ts +41 -0
  15. package/dist/constants.d.ts.map +1 -0
  16. package/dist/constants.js +24 -0
  17. package/dist/constants.js.map +1 -0
  18. package/dist/controllers/admin-chat.controller.d.ts +21 -0
  19. package/dist/controllers/admin-chat.controller.d.ts.map +1 -0
  20. package/dist/controllers/admin-chat.controller.js +64 -0
  21. package/dist/controllers/admin-chat.controller.js.map +1 -0
  22. package/dist/controllers/ai-assistant.controller.d.ts +96 -0
  23. package/dist/controllers/ai-assistant.controller.d.ts.map +1 -0
  24. package/dist/controllers/ai-assistant.controller.js +272 -0
  25. package/dist/controllers/ai-assistant.controller.js.map +1 -0
  26. package/dist/entities/collection-embedding.entity.d.ts +13 -0
  27. package/dist/entities/collection-embedding.entity.d.ts.map +1 -0
  28. package/dist/entities/collection-embedding.entity.js +43 -0
  29. package/dist/entities/collection-embedding.entity.js.map +1 -0
  30. package/dist/entities/product-embedding.entity.d.ts +14 -0
  31. package/dist/entities/product-embedding.entity.d.ts.map +1 -0
  32. package/dist/entities/product-embedding.entity.js +44 -0
  33. package/dist/entities/product-embedding.entity.js.map +1 -0
  34. package/dist/entities/variant-embedding.entity.d.ts +13 -0
  35. package/dist/entities/variant-embedding.entity.d.ts.map +1 -0
  36. package/dist/entities/variant-embedding.entity.js +43 -0
  37. package/dist/entities/variant-embedding.entity.js.map +1 -0
  38. package/dist/handlers/collection-embedding-handler.d.ts +18 -0
  39. package/dist/handlers/collection-embedding-handler.d.ts.map +1 -0
  40. package/dist/handlers/collection-embedding-handler.js +90 -0
  41. package/dist/handlers/collection-embedding-handler.js.map +1 -0
  42. package/dist/handlers/product-embedding-handler.d.ts +20 -0
  43. package/dist/handlers/product-embedding-handler.d.ts.map +1 -0
  44. package/dist/handlers/product-embedding-handler.js +96 -0
  45. package/dist/handlers/product-embedding-handler.js.map +1 -0
  46. package/dist/handlers/variant-embedding-handler.d.ts +19 -0
  47. package/dist/handlers/variant-embedding-handler.d.ts.map +1 -0
  48. package/dist/handlers/variant-embedding-handler.js +101 -0
  49. package/dist/handlers/variant-embedding-handler.js.map +1 -0
  50. package/dist/index.d.ts +23 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +33 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/services/admin-ai-chat.service.d.ts +40 -0
  55. package/dist/services/admin-ai-chat.service.d.ts.map +1 -0
  56. package/dist/services/admin-ai-chat.service.js +201 -0
  57. package/dist/services/admin-ai-chat.service.js.map +1 -0
  58. package/dist/services/admin-system-prompt.d.ts +2 -0
  59. package/dist/services/admin-system-prompt.d.ts.map +1 -0
  60. package/dist/services/admin-system-prompt.js +44 -0
  61. package/dist/services/admin-system-prompt.js.map +1 -0
  62. package/dist/services/admin-tools/admin-collection-tools.d.ts +15 -0
  63. package/dist/services/admin-tools/admin-collection-tools.d.ts.map +1 -0
  64. package/dist/services/admin-tools/admin-collection-tools.js +48 -0
  65. package/dist/services/admin-tools/admin-collection-tools.js.map +1 -0
  66. package/dist/services/admin-tools/admin-customer-tools.d.ts +15 -0
  67. package/dist/services/admin-tools/admin-customer-tools.d.ts.map +1 -0
  68. package/dist/services/admin-tools/admin-customer-tools.js +56 -0
  69. package/dist/services/admin-tools/admin-customer-tools.js.map +1 -0
  70. package/dist/services/admin-tools/admin-order-tools.d.ts +16 -0
  71. package/dist/services/admin-tools/admin-order-tools.d.ts.map +1 -0
  72. package/dist/services/admin-tools/admin-order-tools.js +69 -0
  73. package/dist/services/admin-tools/admin-order-tools.js.map +1 -0
  74. package/dist/services/admin-tools/admin-product-tools.d.ts +29 -0
  75. package/dist/services/admin-tools/admin-product-tools.d.ts.map +1 -0
  76. package/dist/services/admin-tools/admin-product-tools.js +139 -0
  77. package/dist/services/admin-tools/admin-product-tools.js.map +1 -0
  78. package/dist/services/ai-chat.service.d.ts +42 -0
  79. package/dist/services/ai-chat.service.d.ts.map +1 -0
  80. package/dist/services/ai-chat.service.js +308 -0
  81. package/dist/services/ai-chat.service.js.map +1 -0
  82. package/dist/services/chat-result-mapper.d.ts +17 -0
  83. package/dist/services/chat-result-mapper.d.ts.map +1 -0
  84. package/dist/services/chat-result-mapper.js +176 -0
  85. package/dist/services/chat-result-mapper.js.map +1 -0
  86. package/dist/services/collection-embedding.service.d.ts +14 -0
  87. package/dist/services/collection-embedding.service.d.ts.map +1 -0
  88. package/dist/services/collection-embedding.service.js +67 -0
  89. package/dist/services/collection-embedding.service.js.map +1 -0
  90. package/dist/services/conversation-cache.service.d.ts +47 -0
  91. package/dist/services/conversation-cache.service.d.ts.map +1 -0
  92. package/dist/services/conversation-cache.service.js +87 -0
  93. package/dist/services/conversation-cache.service.js.map +1 -0
  94. package/dist/services/embed-all-job.service.d.ts +28 -0
  95. package/dist/services/embed-all-job.service.d.ts.map +1 -0
  96. package/dist/services/embed-all-job.service.js +151 -0
  97. package/dist/services/embed-all-job.service.js.map +1 -0
  98. package/dist/services/embedding.service.d.ts +21 -0
  99. package/dist/services/embedding.service.d.ts.map +1 -0
  100. package/dist/services/embedding.service.js +58 -0
  101. package/dist/services/embedding.service.js.map +1 -0
  102. package/dist/services/product-embedding.service.d.ts +19 -0
  103. package/dist/services/product-embedding.service.d.ts.map +1 -0
  104. package/dist/services/product-embedding.service.js +78 -0
  105. package/dist/services/product-embedding.service.js.map +1 -0
  106. package/dist/services/system-prompt.d.ts +2 -0
  107. package/dist/services/system-prompt.d.ts.map +1 -0
  108. package/dist/services/system-prompt.js +107 -0
  109. package/dist/services/system-prompt.js.map +1 -0
  110. package/dist/services/tools/cart-tools.d.ts +14 -0
  111. package/dist/services/tools/cart-tools.d.ts.map +1 -0
  112. package/dist/services/tools/cart-tools.js +168 -0
  113. package/dist/services/tools/cart-tools.js.map +1 -0
  114. package/dist/services/tools/checkout-tools.d.ts +37 -0
  115. package/dist/services/tools/checkout-tools.d.ts.map +1 -0
  116. package/dist/services/tools/checkout-tools.js +228 -0
  117. package/dist/services/tools/checkout-tools.js.map +1 -0
  118. package/dist/services/tools/order-tools.d.ts +15 -0
  119. package/dist/services/tools/order-tools.d.ts.map +1 -0
  120. package/dist/services/tools/order-tools.js +105 -0
  121. package/dist/services/tools/order-tools.js.map +1 -0
  122. package/dist/services/tools/search-tools.d.ts +21 -0
  123. package/dist/services/tools/search-tools.d.ts.map +1 -0
  124. package/dist/services/tools/search-tools.js +214 -0
  125. package/dist/services/tools/search-tools.js.map +1 -0
  126. package/dist/services/types.d.ts +118 -0
  127. package/dist/services/types.d.ts.map +1 -0
  128. package/dist/services/types.js +3 -0
  129. package/dist/services/types.js.map +1 -0
  130. package/dist/services/variant-embedding.service.d.ts +14 -0
  131. package/dist/services/variant-embedding.service.d.ts.map +1 -0
  132. package/dist/services/variant-embedding.service.js +59 -0
  133. package/dist/services/variant-embedding.service.js.map +1 -0
  134. package/package.json +57 -0
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.CollectionEmbeddingHandler = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@vendure/core");
15
+ const operators_1 = require("rxjs/operators");
16
+ const embedding_service_1 = require("../services/embedding.service");
17
+ const collection_embedding_service_1 = require("../services/collection-embedding.service");
18
+ /**
19
+ * Subscribes to Collection created/updated/deleted; keeps CollectionEmbedding in sync.
20
+ */
21
+ let CollectionEmbeddingHandler = class CollectionEmbeddingHandler {
22
+ constructor(eventBus, connection, embeddingService, collectionEmbeddingService) {
23
+ this.eventBus = eventBus;
24
+ this.connection = connection;
25
+ this.embeddingService = embeddingService;
26
+ this.collectionEmbeddingService = collectionEmbeddingService;
27
+ }
28
+ onModuleInit() {
29
+ this.eventBus
30
+ .ofType(core_1.CollectionEvent)
31
+ .pipe((0, operators_1.filter)((e) => e.type === 'created' || e.type === 'updated' || e.type === 'deleted'))
32
+ .subscribe((event) => {
33
+ if (event.type === 'deleted') {
34
+ const id = this.getCollectionId(event.entity);
35
+ if (id != null)
36
+ this.collectionEmbeddingService
37
+ .deleteByCollectionId(event.ctx, id)
38
+ .catch((err) => console.error('[AiAssistantPlugin] Failed to delete collection embedding', id, err));
39
+ return;
40
+ }
41
+ this.embedCollection(event).catch((err) => {
42
+ var _a;
43
+ return console.error('[AiAssistantPlugin] Failed to embed collection', (_a = event.entity) === null || _a === void 0 ? void 0 : _a.id, err);
44
+ });
45
+ });
46
+ }
47
+ getCollectionId(c) {
48
+ const id = c === null || c === void 0 ? void 0 : c.id;
49
+ if (id == null)
50
+ return null;
51
+ return typeof id === 'number' ? id : parseInt(String(id), 10);
52
+ }
53
+ async embedCollection(event) {
54
+ var _a;
55
+ const collectionId = this.getCollectionId(event.entity);
56
+ if (collectionId == null)
57
+ return;
58
+ const repo = this.connection.rawConnection.getRepository(core_1.Collection);
59
+ const collection = await repo.findOne({
60
+ where: { id: collectionId },
61
+ relations: ['translations'],
62
+ });
63
+ if (!((_a = collection === null || collection === void 0 ? void 0 : collection.translations) === null || _a === void 0 ? void 0 : _a.length))
64
+ return;
65
+ const text = buildCollectionText(collection);
66
+ if (!text.trim())
67
+ return;
68
+ const embedding = await this.embeddingService.embed(text);
69
+ await this.collectionEmbeddingService.upsertEmbedding(event.ctx, collectionId, embedding);
70
+ }
71
+ };
72
+ exports.CollectionEmbeddingHandler = CollectionEmbeddingHandler;
73
+ exports.CollectionEmbeddingHandler = CollectionEmbeddingHandler = __decorate([
74
+ (0, common_1.Injectable)(),
75
+ __metadata("design:paramtypes", [core_1.EventBus,
76
+ core_1.TransactionalConnection,
77
+ embedding_service_1.EmbeddingService,
78
+ collection_embedding_service_1.CollectionEmbeddingService])
79
+ ], CollectionEmbeddingHandler);
80
+ function buildCollectionText(collection) {
81
+ const parts = [];
82
+ for (const t of collection.translations || []) {
83
+ if (t === null || t === void 0 ? void 0 : t.name)
84
+ parts.push(String(t.name));
85
+ if (t === null || t === void 0 ? void 0 : t.description)
86
+ parts.push(String(t.description));
87
+ }
88
+ return parts.join(' ').trim();
89
+ }
90
+ //# sourceMappingURL=collection-embedding-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection-embedding-handler.js","sourceRoot":"","sources":["../../src/handlers/collection-embedding-handler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA0D;AAC1D,wCAKuB;AACvB,8CAAwC;AACxC,qEAAiE;AACjE,2FAAsF;AAEtF;;GAEG;AAEI,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IACnC,YACY,QAAkB,EAClB,UAAmC,EACnC,gBAAkC,EAClC,0BAAsD;QAHtD,aAAQ,GAAR,QAAQ,CAAU;QAClB,eAAU,GAAV,UAAU,CAAyB;QACnC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,+BAA0B,GAA1B,0BAA0B,CAA4B;IAC/D,CAAC;IAEJ,YAAY;QACR,IAAI,CAAC,QAAQ;aACR,MAAM,CAAC,sBAAe,CAAC;aACvB,IAAI,CACD,IAAA,kBAAM,EACF,CAAC,CAAC,EAAE,EAAE,CACF,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAC3E,CACJ;aACA,SAAS,CAAC,CAAC,KAAsB,EAAE,EAAE;YAClC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,EAAE,IAAI,IAAI;oBACV,IAAI,CAAC,0BAA0B;yBAC1B,oBAAoB,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;yBACnC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACX,OAAO,CAAC,KAAK,CACT,2DAA2D,EAC3D,EAAE,EACF,GAAG,CACN,CACJ,CAAC;gBACV,OAAO;YACX,CAAC;YACD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;;gBACtC,OAAA,OAAO,CAAC,KAAK,CACT,gDAAgD,EAChD,MAAA,KAAK,CAAC,MAAM,0CAAE,EAAE,EAChB,GAAG,CACN,CAAA;aAAA,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;IACX,CAAC;IAEO,eAAe,CAAC,CAAa;QACjC,MAAM,EAAE,GAAG,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,EAAE,CAAC;QACjB,IAAI,EAAE,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QAC5B,OAAO,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAsB;;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,YAAY,IAAI,IAAI;YAAE,OAAO;QAEjC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,iBAAU,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YAClC,KAAK,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE;YAC3B,SAAS,EAAE,CAAC,cAAc,CAAC;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,YAAY,0CAAE,MAAM,CAAA;YAAE,OAAO;QAE9C,MAAM,IAAI,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO;QAEzB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,CAAC,0BAA0B,CAAC,eAAe,CACjD,KAAK,CAAC,GAAG,EACT,YAAY,EACZ,SAAS,CACZ,CAAC;IACN,CAAC;CACJ,CAAA;AArEY,gEAA0B;qCAA1B,0BAA0B;IADtC,IAAA,mBAAU,GAAE;qCAGa,eAAQ;QACN,8BAAuB;QACjB,oCAAgB;QACN,yDAA0B;GALzD,0BAA0B,CAqEtC;AAED,SAAS,mBAAmB,CAAC,UAAsB;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAK,UAAU,CAAC,YAA0D,IAAI,EAAE,EAAE,CAAC;QAC3F,IAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { EventBus, TransactionalConnection } from '@vendure/core';
3
+ import { EmbeddingService } from '../services/embedding.service';
4
+ import { ProductEmbeddingService } from '../services/product-embedding.service';
5
+ /**
6
+ * Subscribes to Product created/updated/deleted and keeps ProductEmbedding in sync.
7
+ * On create/update: load product translations, build text (name + description), embed via OpenAI, upsert.
8
+ * On delete: remove embedding row.
9
+ */
10
+ export declare class ProductEmbeddingHandler implements OnModuleInit {
11
+ private eventBus;
12
+ private connection;
13
+ private embeddingService;
14
+ private productEmbeddingService;
15
+ constructor(eventBus: EventBus, connection: TransactionalConnection, embeddingService: EmbeddingService, productEmbeddingService: ProductEmbeddingService);
16
+ onModuleInit(): void;
17
+ private getProductId;
18
+ private embedProduct;
19
+ }
20
+ //# sourceMappingURL=product-embedding-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-embedding-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/product-embedding-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAgB,uBAAuB,EAAW,MAAM,eAAe,CAAC;AAEzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEhF;;;;GAIG;AACH,qBACa,uBAAwB,YAAW,YAAY;IAEpD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,uBAAuB;gBAHvB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,uBAAuB,EACnC,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,uBAAuB;IAG5D,YAAY;IAuBZ,OAAO,CAAC,YAAY;YAMN,YAAY;CAmB7B"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ProductEmbeddingHandler = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@vendure/core");
15
+ const operators_1 = require("rxjs/operators");
16
+ const embedding_service_1 = require("../services/embedding.service");
17
+ const product_embedding_service_1 = require("../services/product-embedding.service");
18
+ /**
19
+ * Subscribes to Product created/updated/deleted and keeps ProductEmbedding in sync.
20
+ * On create/update: load product translations, build text (name + description), embed via OpenAI, upsert.
21
+ * On delete: remove embedding row.
22
+ */
23
+ let ProductEmbeddingHandler = class ProductEmbeddingHandler {
24
+ constructor(eventBus, connection, embeddingService, productEmbeddingService) {
25
+ this.eventBus = eventBus;
26
+ this.connection = connection;
27
+ this.embeddingService = embeddingService;
28
+ this.productEmbeddingService = productEmbeddingService;
29
+ }
30
+ onModuleInit() {
31
+ this.eventBus
32
+ .ofType(core_1.ProductEvent)
33
+ .pipe((0, operators_1.filter)((e) => e.type === 'created' || e.type === 'updated' || e.type === 'deleted'))
34
+ .subscribe((event) => {
35
+ if (event.type === 'deleted') {
36
+ const productId = this.getProductId(event.entity);
37
+ if (productId != null) {
38
+ this.productEmbeddingService.deleteByProductId(event.ctx, productId).catch((err) => {
39
+ console.error('[AiAssistantPlugin] Failed to delete embedding for product', productId, err);
40
+ });
41
+ }
42
+ return;
43
+ }
44
+ // created | updated
45
+ this.embedProduct(event).catch((err) => {
46
+ console.error('[AiAssistantPlugin] Failed to embed product', event.entity.id, err);
47
+ });
48
+ });
49
+ }
50
+ getProductId(product) {
51
+ const id = product === null || product === void 0 ? void 0 : product.id;
52
+ if (id == null)
53
+ return null;
54
+ return typeof id === 'number' ? id : parseInt(String(id), 10);
55
+ }
56
+ async embedProduct(event) {
57
+ var _a;
58
+ const productId = this.getProductId(event.entity);
59
+ if (productId == null)
60
+ return;
61
+ const productRepo = this.connection.rawConnection.getRepository(core_1.Product);
62
+ const product = await productRepo.findOne({
63
+ where: { id: productId },
64
+ relations: ['translations'],
65
+ });
66
+ if (!((_a = product === null || product === void 0 ? void 0 : product.translations) === null || _a === void 0 ? void 0 : _a.length)) {
67
+ return;
68
+ }
69
+ const text = buildProductText(product);
70
+ if (!text.trim())
71
+ return;
72
+ const embedding = await this.embeddingService.embed(text);
73
+ await this.productEmbeddingService.upsertEmbedding(event.ctx, productId, embedding);
74
+ }
75
+ };
76
+ exports.ProductEmbeddingHandler = ProductEmbeddingHandler;
77
+ exports.ProductEmbeddingHandler = ProductEmbeddingHandler = __decorate([
78
+ (0, common_1.Injectable)(),
79
+ __metadata("design:paramtypes", [core_1.EventBus,
80
+ core_1.TransactionalConnection,
81
+ embedding_service_1.EmbeddingService,
82
+ product_embedding_service_1.ProductEmbeddingService])
83
+ ], ProductEmbeddingHandler);
84
+ function buildProductText(product) {
85
+ const parts = [];
86
+ for (const t of product.translations || []) {
87
+ const name = t.name;
88
+ const description = t.description;
89
+ if (name)
90
+ parts.push(String(name));
91
+ if (description)
92
+ parts.push(String(description));
93
+ }
94
+ return parts.join(' ').trim();
95
+ }
96
+ //# sourceMappingURL=product-embedding-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-embedding-handler.js","sourceRoot":"","sources":["../../src/handlers/product-embedding-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { EventBus, TransactionalConnection } from '@vendure/core';
3
+ import { EmbeddingService } from '../services/embedding.service';
4
+ import { VariantEmbeddingService } from '../services/variant-embedding.service';
5
+ /**
6
+ * Subscribes to ProductVariant created/updated/deleted; keeps VariantEmbedding in sync.
7
+ * Variant is the add-to-cart unit (Phase 2); embedding enables discovery by intent.
8
+ */
9
+ export declare class VariantEmbeddingHandler implements OnModuleInit {
10
+ private eventBus;
11
+ private connection;
12
+ private embeddingService;
13
+ private variantEmbeddingService;
14
+ constructor(eventBus: EventBus, connection: TransactionalConnection, embeddingService: EmbeddingService, variantEmbeddingService: VariantEmbeddingService);
15
+ onModuleInit(): void;
16
+ private getId;
17
+ private embedVariant;
18
+ }
19
+ //# sourceMappingURL=variant-embedding-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variant-embedding-handler.d.ts","sourceRoot":"","sources":["../../src/handlers/variant-embedding-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EACH,QAAQ,EAGR,uBAAuB,EAG1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEhF;;;GAGG;AACH,qBACa,uBAAwB,YAAW,YAAY;IAEpD,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,uBAAuB;gBAHvB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,uBAAuB,EACnC,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,uBAAuB;IAG5D,YAAY;IAuCZ,OAAO,CAAC,KAAK;YAMC,YAAY;CAqB7B"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.VariantEmbeddingHandler = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@vendure/core");
15
+ const operators_1 = require("rxjs/operators");
16
+ const embedding_service_1 = require("../services/embedding.service");
17
+ const variant_embedding_service_1 = require("../services/variant-embedding.service");
18
+ /**
19
+ * Subscribes to ProductVariant created/updated/deleted; keeps VariantEmbedding in sync.
20
+ * Variant is the add-to-cart unit (Phase 2); embedding enables discovery by intent.
21
+ */
22
+ let VariantEmbeddingHandler = class VariantEmbeddingHandler {
23
+ constructor(eventBus, connection, embeddingService, variantEmbeddingService) {
24
+ this.eventBus = eventBus;
25
+ this.connection = connection;
26
+ this.embeddingService = embeddingService;
27
+ this.variantEmbeddingService = variantEmbeddingService;
28
+ }
29
+ onModuleInit() {
30
+ this.eventBus
31
+ .ofType(core_1.ProductVariantEvent)
32
+ .pipe((0, operators_1.filter)((e) => e.type === 'created' || e.type === 'updated' || e.type === 'deleted'))
33
+ .subscribe((event) => {
34
+ const variants = Array.isArray(event.entity) ? event.entity : [event.entity];
35
+ if (event.type === 'deleted') {
36
+ for (const v of variants) {
37
+ const id = this.getId(v);
38
+ if (id != null)
39
+ this.variantEmbeddingService
40
+ .deleteByVariantId(event.ctx, id)
41
+ .catch((err) => console.error('[AiAssistantPlugin] Failed to delete variant embedding', id, err));
42
+ }
43
+ return;
44
+ }
45
+ for (const v of variants) {
46
+ this.embedVariant(event.ctx, v).catch((err) => console.error('[AiAssistantPlugin] Failed to embed variant', v === null || v === void 0 ? void 0 : v.id, err));
47
+ }
48
+ });
49
+ }
50
+ getId(v) {
51
+ const id = v === null || v === void 0 ? void 0 : v.id;
52
+ if (id == null)
53
+ return null;
54
+ return typeof id === 'number' ? id : parseInt(String(id), 10);
55
+ }
56
+ async embedVariant(ctx, variant) {
57
+ const variantId = this.getId(variant);
58
+ if (variantId == null)
59
+ return;
60
+ const conn = this.connection.rawConnection;
61
+ const variantRepo = conn.getRepository(core_1.ProductVariant);
62
+ const v = await variantRepo.findOne({
63
+ where: { id: variantId },
64
+ relations: ['translations', 'product', 'product.translations'],
65
+ });
66
+ if (!v)
67
+ return;
68
+ const text = buildVariantText(v);
69
+ if (!text.trim())
70
+ return;
71
+ const embedding = await this.embeddingService.embed(text);
72
+ await this.variantEmbeddingService.upsertEmbedding(ctx, variantId, embedding);
73
+ }
74
+ };
75
+ exports.VariantEmbeddingHandler = VariantEmbeddingHandler;
76
+ exports.VariantEmbeddingHandler = VariantEmbeddingHandler = __decorate([
77
+ (0, common_1.Injectable)(),
78
+ __metadata("design:paramtypes", [core_1.EventBus,
79
+ core_1.TransactionalConnection,
80
+ embedding_service_1.EmbeddingService,
81
+ variant_embedding_service_1.VariantEmbeddingService])
82
+ ], VariantEmbeddingHandler);
83
+ function buildVariantText(variant) {
84
+ const parts = [];
85
+ for (const t of variant.translations || []) {
86
+ if (t === null || t === void 0 ? void 0 : t.name)
87
+ parts.push(String(t.name));
88
+ }
89
+ const sku = variant.sku;
90
+ if (sku)
91
+ parts.push(sku);
92
+ if (variant.product) {
93
+ for (const pt of variant.product
94
+ .translations || []) {
95
+ if (pt === null || pt === void 0 ? void 0 : pt.name)
96
+ parts.push(String(pt.name));
97
+ }
98
+ }
99
+ return parts.join(' ').trim();
100
+ }
101
+ //# sourceMappingURL=variant-embedding-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variant-embedding-handler.js","sourceRoot":"","sources":["../../src/handlers/variant-embedding-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export { AiAssistantPlugin } from './ai-assistant.plugin';
2
+ export type { AiAssistantPluginOptions } from './ai-assistant.plugin';
3
+ export { ProductEmbedding } from './entities/product-embedding.entity';
4
+ export { VariantEmbedding } from './entities/variant-embedding.entity';
5
+ export { CollectionEmbedding } from './entities/collection-embedding.entity';
6
+ export { EmbeddingService } from './services/embedding.service';
7
+ export { ProductEmbeddingService } from './services/product-embedding.service';
8
+ export { VariantEmbeddingService } from './services/variant-embedding.service';
9
+ export { CollectionEmbeddingService } from './services/collection-embedding.service';
10
+ export { AiChatService } from './services/ai-chat.service';
11
+ export { AdminAiChatService } from './services/admin-ai-chat.service';
12
+ export { ConversationCacheService } from './services/conversation-cache.service';
13
+ export type { CachedConversation } from './services/conversation-cache.service';
14
+ export type { EmbeddingOptions } from './services/embedding.service';
15
+ export type { SimilarProductResult } from './services/product-embedding.service';
16
+ export type { SimilarVariantResult } from './services/variant-embedding.service';
17
+ export type { SimilarCollectionResult } from './services/collection-embedding.service';
18
+ export { AI_ASSISTANT_OPTIONS, EMBED_ALL_QUEUE_NAME } from './constants';
19
+ export { AiAssistantController } from './controllers/ai-assistant.controller';
20
+ export { AdminChatController } from './controllers/admin-chat.controller';
21
+ export type { AdminChatRequest, AdminChatResponse } from './controllers/admin-chat.controller';
22
+ export type { AiChatRequest, AiChatResponse, AiChatProduct, AddToCartAction, AiChatOrder, AiChatOrderLine, AiActiveOrder, AiCartLine, SetShippingAddressAction, SetBillingAddressAction, SetShippingMethodAction, } from './controllers/ai-assistant.controller';
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,YAAY,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,YAAY,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,YAAY,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,YAAY,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC/F,YAAY,EACR,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,WAAW,EACX,eAAe,EACf,aAAa,EACb,UAAU,EACV,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,GAC1B,MAAM,uCAAuC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AdminChatController = exports.AiAssistantController = exports.EMBED_ALL_QUEUE_NAME = exports.AI_ASSISTANT_OPTIONS = exports.ConversationCacheService = exports.AdminAiChatService = exports.AiChatService = exports.CollectionEmbeddingService = exports.VariantEmbeddingService = exports.ProductEmbeddingService = exports.EmbeddingService = exports.CollectionEmbedding = exports.VariantEmbedding = exports.ProductEmbedding = exports.AiAssistantPlugin = void 0;
4
+ var ai_assistant_plugin_1 = require("./ai-assistant.plugin");
5
+ Object.defineProperty(exports, "AiAssistantPlugin", { enumerable: true, get: function () { return ai_assistant_plugin_1.AiAssistantPlugin; } });
6
+ var product_embedding_entity_1 = require("./entities/product-embedding.entity");
7
+ Object.defineProperty(exports, "ProductEmbedding", { enumerable: true, get: function () { return product_embedding_entity_1.ProductEmbedding; } });
8
+ var variant_embedding_entity_1 = require("./entities/variant-embedding.entity");
9
+ Object.defineProperty(exports, "VariantEmbedding", { enumerable: true, get: function () { return variant_embedding_entity_1.VariantEmbedding; } });
10
+ var collection_embedding_entity_1 = require("./entities/collection-embedding.entity");
11
+ Object.defineProperty(exports, "CollectionEmbedding", { enumerable: true, get: function () { return collection_embedding_entity_1.CollectionEmbedding; } });
12
+ var embedding_service_1 = require("./services/embedding.service");
13
+ Object.defineProperty(exports, "EmbeddingService", { enumerable: true, get: function () { return embedding_service_1.EmbeddingService; } });
14
+ var product_embedding_service_1 = require("./services/product-embedding.service");
15
+ Object.defineProperty(exports, "ProductEmbeddingService", { enumerable: true, get: function () { return product_embedding_service_1.ProductEmbeddingService; } });
16
+ var variant_embedding_service_1 = require("./services/variant-embedding.service");
17
+ Object.defineProperty(exports, "VariantEmbeddingService", { enumerable: true, get: function () { return variant_embedding_service_1.VariantEmbeddingService; } });
18
+ var collection_embedding_service_1 = require("./services/collection-embedding.service");
19
+ Object.defineProperty(exports, "CollectionEmbeddingService", { enumerable: true, get: function () { return collection_embedding_service_1.CollectionEmbeddingService; } });
20
+ var ai_chat_service_1 = require("./services/ai-chat.service");
21
+ Object.defineProperty(exports, "AiChatService", { enumerable: true, get: function () { return ai_chat_service_1.AiChatService; } });
22
+ var admin_ai_chat_service_1 = require("./services/admin-ai-chat.service");
23
+ Object.defineProperty(exports, "AdminAiChatService", { enumerable: true, get: function () { return admin_ai_chat_service_1.AdminAiChatService; } });
24
+ var conversation_cache_service_1 = require("./services/conversation-cache.service");
25
+ Object.defineProperty(exports, "ConversationCacheService", { enumerable: true, get: function () { return conversation_cache_service_1.ConversationCacheService; } });
26
+ var constants_1 = require("./constants");
27
+ Object.defineProperty(exports, "AI_ASSISTANT_OPTIONS", { enumerable: true, get: function () { return constants_1.AI_ASSISTANT_OPTIONS; } });
28
+ Object.defineProperty(exports, "EMBED_ALL_QUEUE_NAME", { enumerable: true, get: function () { return constants_1.EMBED_ALL_QUEUE_NAME; } });
29
+ var ai_assistant_controller_1 = require("./controllers/ai-assistant.controller");
30
+ Object.defineProperty(exports, "AiAssistantController", { enumerable: true, get: function () { return ai_assistant_controller_1.AiAssistantController; } });
31
+ var admin_chat_controller_1 = require("./controllers/admin-chat.controller");
32
+ Object.defineProperty(exports, "AdminChatController", { enumerable: true, get: function () { return admin_chat_controller_1.AdminChatController; } });
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAE1B,gFAAuE;AAA9D,4HAAA,gBAAgB,OAAA;AACzB,gFAAuE;AAA9D,4HAAA,gBAAgB,OAAA;AACzB,sFAA6E;AAApE,kIAAA,mBAAmB,OAAA;AAC5B,kEAAgE;AAAvD,qHAAA,gBAAgB,OAAA;AACzB,kFAA+E;AAAtE,oIAAA,uBAAuB,OAAA;AAChC,kFAA+E;AAAtE,oIAAA,uBAAuB,OAAA;AAChC,wFAAqF;AAA5E,0IAAA,0BAA0B,OAAA;AACnC,8DAA2D;AAAlD,gHAAA,aAAa,OAAA;AACtB,0EAAsE;AAA7D,2HAAA,kBAAkB,OAAA;AAC3B,oFAAiF;AAAxE,sIAAA,wBAAwB,OAAA;AAMjC,yCAAyE;AAAhE,iHAAA,oBAAoB,OAAA;AAAE,iHAAA,oBAAoB,OAAA;AACnD,iFAA8E;AAArE,gIAAA,qBAAqB,OAAA;AAC9B,6EAA0E;AAAjE,4HAAA,mBAAmB,OAAA"}
@@ -0,0 +1,40 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { ModuleRef } from '@nestjs/core';
3
+ import { RequestContext, TransactionalConnection, ConfigService } from '@vendure/core';
4
+ import { type AiAssistantPluginOptions } from '../constants';
5
+ import { EmbeddingService } from './embedding.service';
6
+ import { ProductEmbeddingService } from './product-embedding.service';
7
+ import { CollectionEmbeddingService } from './collection-embedding.service';
8
+ import type { AiChatProduct, AiChatCollection, AiChatOrder } from './types';
9
+ export interface AdminChatResult {
10
+ message: string;
11
+ products: AiChatProduct[];
12
+ collections: AiChatCollection[];
13
+ orders?: AiChatOrder[];
14
+ }
15
+ export declare class AdminAiChatService implements OnModuleInit {
16
+ private options;
17
+ private connection;
18
+ private moduleRef;
19
+ private configService;
20
+ private embeddingService;
21
+ private productEmbeddingService;
22
+ private collectionEmbeddingService;
23
+ private readonly logger;
24
+ private openai;
25
+ private fulltextSearchService;
26
+ private assetUrlPrefix;
27
+ private mapper;
28
+ private productTools;
29
+ private orderTools;
30
+ private customerTools;
31
+ private collectionTools;
32
+ constructor(options: AiAssistantPluginOptions, connection: TransactionalConnection, moduleRef: ModuleRef, configService: ConfigService, embeddingService: EmbeddingService, productEmbeddingService: ProductEmbeddingService, collectionEmbeddingService: CollectionEmbeddingService);
33
+ onModuleInit(): Promise<void>;
34
+ private buildTools;
35
+ chat(ctx: RequestContext, userMessage: string, conversationHistory?: Array<{
36
+ role: 'user' | 'assistant';
37
+ content: string;
38
+ }>): Promise<AdminChatResult>;
39
+ }
40
+ //# sourceMappingURL=admin-ai-chat.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-ai-chat.service.d.ts","sourceRoot":"","sources":["../../src/services/admin-ai-chat.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAwB,KAAK,wBAAwB,EAAqB,MAAM,cAAc,CAAC;AACtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAO5E,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE5E,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,qBACa,kBAAmB,YAAW,YAAY;IAajB,OAAO,CAAC,OAAO;IAC7C,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,uBAAuB;IAC/B,OAAO,CAAC,0BAA0B;IAlBtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;IAC9D,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,qBAAqB,CAAM;IACnC,OAAO,CAAC,cAAc,CAAc;IAEpC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,eAAe,CAAwB;gBAGL,OAAO,EAAE,wBAAwB,EAC/D,UAAU,EAAE,uBAAuB,EACnC,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,uBAAuB,EAChD,0BAA0B,EAAE,0BAA0B;IAK5D,YAAY;IAsClB,OAAO,CAAC,UAAU;IAuDZ,IAAI,CACN,GAAG,EAAE,cAAc,EACnB,WAAW,EAAE,MAAM,EACnB,mBAAmB,GAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAM,GACjF,OAAO,CAAC,eAAe,CAAC;CA0D9B"}