@loopstack/core 0.1.2 → 0.3.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 (142) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/modules/common/common.module.js +9 -15
  3. package/dist/modules/common/common.module.js.map +1 -1
  4. package/dist/modules/common/errors/object-expression.error.d.ts +4 -0
  5. package/dist/modules/common/errors/object-expression.error.js +13 -0
  6. package/dist/modules/common/errors/object-expression.error.js.map +1 -0
  7. package/dist/modules/common/errors/template-expression.error.d.ts +4 -0
  8. package/dist/modules/common/errors/template-expression.error.js +13 -0
  9. package/dist/modules/common/errors/template-expression.error.js.map +1 -0
  10. package/dist/modules/common/services/context.service.d.ts +1 -0
  11. package/dist/modules/common/services/context.service.js +4 -0
  12. package/dist/modules/common/services/context.service.js.map +1 -1
  13. package/dist/modules/common/services/expression-handler/object-expression.handler.d.ts +20 -0
  14. package/dist/modules/common/services/expression-handler/object-expression.handler.js +125 -0
  15. package/dist/modules/common/services/expression-handler/object-expression.handler.js.map +1 -0
  16. package/dist/modules/common/services/expression-handler/template-expression.handler.d.ts +12 -0
  17. package/dist/modules/common/services/expression-handler/template-expression.handler.js +63 -0
  18. package/dist/modules/common/services/expression-handler/template-expression.handler.js.map +1 -0
  19. package/dist/modules/common/services/handlebars-helpers/date-formatter-handlebars-helper.service.d.ts +9 -0
  20. package/dist/modules/common/services/handlebars-helpers/date-formatter-handlebars-helper.service.js +124 -0
  21. package/dist/modules/common/services/handlebars-helpers/date-formatter-handlebars-helper.service.js.map +1 -0
  22. package/dist/modules/common/services/handlebars-helpers/index.d.ts +1 -0
  23. package/dist/modules/common/services/handlebars-helpers/index.js +18 -0
  24. package/dist/modules/common/services/handlebars-helpers/index.js.map +1 -0
  25. package/dist/modules/common/services/handlebars-processor.service.d.ts +12 -0
  26. package/dist/modules/common/services/handlebars-processor.service.js +70 -0
  27. package/dist/modules/common/services/handlebars-processor.service.js.map +1 -0
  28. package/dist/modules/common/services/index.d.ts +6 -5
  29. package/dist/modules/common/services/index.js +6 -5
  30. package/dist/modules/common/services/index.js.map +1 -1
  31. package/dist/modules/common/services/template.service.d.ts +16 -0
  32. package/dist/modules/common/services/template.service.js +64 -0
  33. package/dist/modules/common/services/template.service.js.map +1 -0
  34. package/dist/modules/common/services/variable-sanitizer.service.d.ts +9 -0
  35. package/dist/modules/common/services/variable-sanitizer.service.js +84 -0
  36. package/dist/modules/common/services/variable-sanitizer.service.js.map +1 -0
  37. package/dist/modules/configuration/configuration.module.js +2 -1
  38. package/dist/modules/configuration/configuration.module.js.map +1 -1
  39. package/dist/modules/configuration/services/configuration.service.d.ts +15 -14
  40. package/dist/modules/configuration/services/configuration.service.js +97 -107
  41. package/dist/modules/configuration/services/configuration.service.js.map +1 -1
  42. package/dist/modules/configuration/services/dynamic-schema-generator.service.js +3 -1
  43. package/dist/modules/configuration/services/dynamic-schema-generator.service.js.map +1 -1
  44. package/dist/modules/configuration/services/index.d.ts +1 -0
  45. package/dist/modules/configuration/services/index.js +1 -0
  46. package/dist/modules/configuration/services/index.js.map +1 -1
  47. package/dist/modules/configuration/services/schema-registry.service.d.ts +9 -0
  48. package/dist/modules/configuration/services/schema-registry.service.js +41 -0
  49. package/dist/modules/configuration/services/schema-registry.service.js.map +1 -0
  50. package/dist/modules/configuration/services/service-registry.service.js +1 -1
  51. package/dist/modules/configuration/services/service-registry.service.js.map +1 -1
  52. package/dist/modules/persistence/services/document.service.d.ts +6 -2
  53. package/dist/modules/persistence/services/document.service.js +29 -17
  54. package/dist/modules/persistence/services/document.service.js.map +1 -1
  55. package/dist/modules/persistence/services/namespace.service.js.map +1 -1
  56. package/dist/modules/persistence/services/workflow.service.js.map +1 -1
  57. package/dist/modules/workflow-processor/services/index.d.ts +4 -1
  58. package/dist/modules/workflow-processor/services/index.js +4 -1
  59. package/dist/modules/workflow-processor/services/index.js.map +1 -1
  60. package/dist/modules/workflow-processor/services/pipeline-processor.service.d.ts +15 -8
  61. package/dist/modules/workflow-processor/services/pipeline-processor.service.js +163 -29
  62. package/dist/modules/workflow-processor/services/pipeline-processor.service.js.map +1 -1
  63. package/dist/modules/workflow-processor/services/root-processor.service.d.ts +12 -0
  64. package/dist/modules/workflow-processor/services/root-processor.service.js +49 -0
  65. package/dist/modules/workflow-processor/services/root-processor.service.js.map +1 -0
  66. package/dist/modules/workflow-processor/services/service-execution.service.d.ts +12 -0
  67. package/dist/modules/workflow-processor/services/service-execution.service.js +53 -0
  68. package/dist/modules/workflow-processor/services/service-execution.service.js.map +1 -0
  69. package/dist/modules/workflow-processor/services/state-machine-config.service.d.ts +2 -17
  70. package/dist/modules/workflow-processor/services/state-machine-config.service.js +33 -17
  71. package/dist/modules/workflow-processor/services/state-machine-config.service.js.map +1 -1
  72. package/dist/modules/workflow-processor/services/state-machine-processor.service.d.ts +11 -7
  73. package/dist/modules/workflow-processor/services/state-machine-processor.service.js +95 -30
  74. package/dist/modules/workflow-processor/services/state-machine-processor.service.js.map +1 -1
  75. package/dist/modules/workflow-processor/services/template-expression-evaluator.service.d.ts +24 -4
  76. package/dist/modules/workflow-processor/services/template-expression-evaluator.service.js +90 -21
  77. package/dist/modules/workflow-processor/services/template-expression-evaluator.service.js.map +1 -1
  78. package/dist/modules/workflow-processor/services/tool-execution.service.d.ts +8 -20
  79. package/dist/modules/workflow-processor/services/tool-execution.service.js +31 -55
  80. package/dist/modules/workflow-processor/services/tool-execution.service.js.map +1 -1
  81. package/dist/modules/workflow-processor/services/workflow-context.service.d.ts +4 -0
  82. package/dist/modules/{common/services/template-engine.service.js → workflow-processor/services/workflow-context.service.js} +12 -15
  83. package/dist/modules/workflow-processor/services/workflow-context.service.js.map +1 -0
  84. package/dist/modules/workflow-processor/services/workflow-processor.service.d.ts +5 -26
  85. package/dist/modules/workflow-processor/services/workflow-processor.service.js +18 -184
  86. package/dist/modules/workflow-processor/services/workflow-processor.service.js.map +1 -1
  87. package/dist/modules/workflow-processor/services/workflow-state.service.d.ts +8 -0
  88. package/dist/modules/workflow-processor/services/workflow-state.service.js +49 -0
  89. package/dist/modules/workflow-processor/services/workflow-state.service.js.map +1 -0
  90. package/dist/modules/workflow-processor/tool-services/add-namespace.service.js +4 -4
  91. package/dist/modules/workflow-processor/tool-services/add-namespace.service.js.map +1 -1
  92. package/dist/modules/workflow-processor/tool-services/batch-create-documents.service.d.ts +6 -10
  93. package/dist/modules/workflow-processor/tool-services/batch-create-documents.service.js +39 -27
  94. package/dist/modules/workflow-processor/tool-services/batch-create-documents.service.js.map +1 -1
  95. package/dist/modules/workflow-processor/tool-services/create-document.service.d.ts +7 -142
  96. package/dist/modules/workflow-processor/tool-services/create-document.service.js +91 -35
  97. package/dist/modules/workflow-processor/tool-services/create-document.service.js.map +1 -1
  98. package/dist/modules/workflow-processor/tool-services/load-document.service.d.ts +26 -51
  99. package/dist/modules/workflow-processor/tool-services/load-document.service.js +59 -81
  100. package/dist/modules/workflow-processor/tool-services/load-document.service.js.map +1 -1
  101. package/dist/modules/workflow-processor/tool-services/mock.service.d.ts +11 -8
  102. package/dist/modules/workflow-processor/tool-services/mock.service.js +41 -9
  103. package/dist/modules/workflow-processor/tool-services/mock.service.js.map +1 -1
  104. package/dist/modules/workflow-processor/tool-services/set-context.service.d.ts +3 -0
  105. package/dist/modules/workflow-processor/tool-services/set-context.service.js +11 -5
  106. package/dist/modules/workflow-processor/tool-services/set-context.service.js.map +1 -1
  107. package/dist/modules/workflow-processor/tool-services/set-target-place.service.d.ts +1 -1
  108. package/dist/modules/workflow-processor/tool-services/set-target-place.service.js +6 -5
  109. package/dist/modules/workflow-processor/tool-services/set-target-place.service.js.map +1 -1
  110. package/dist/modules/workflow-processor/tool-services/transition-selector.service.js +2 -2
  111. package/dist/modules/workflow-processor/tool-services/transition-selector.service.js.map +1 -1
  112. package/dist/modules/workflow-processor/tool-services/update-document.service.d.ts +32 -62
  113. package/dist/modules/workflow-processor/tool-services/update-document.service.js +92 -7
  114. package/dist/modules/workflow-processor/tool-services/update-document.service.js.map +1 -1
  115. package/dist/modules/workflow-processor/validators/workflow-option.validator.d.ts +1 -1
  116. package/dist/modules/workflow-processor/validators/workflow-option.validator.js +3 -3
  117. package/dist/modules/workflow-processor/validators/workflow-option.validator.js.map +1 -1
  118. package/dist/modules/workflow-processor/workflow-processor.module.js +9 -2
  119. package/dist/modules/workflow-processor/workflow-processor.module.js.map +1 -1
  120. package/dist/utils/load-configuration.js +5 -3
  121. package/dist/utils/load-configuration.js.map +1 -1
  122. package/package.json +5 -3
  123. package/dist/modules/common/services/document-helper.service.d.ts +0 -212
  124. package/dist/modules/common/services/document-helper.service.js +0 -53
  125. package/dist/modules/common/services/document-helper.service.js.map +0 -1
  126. package/dist/modules/common/services/expression-evaluator.service.d.ts +0 -5
  127. package/dist/modules/common/services/expression-evaluator.service.js +0 -44
  128. package/dist/modules/common/services/expression-evaluator.service.js.map +0 -1
  129. package/dist/modules/common/services/schema-validator.service.d.ts +0 -7
  130. package/dist/modules/common/services/schema-validator.service.js +0 -41
  131. package/dist/modules/common/services/schema-validator.service.js.map +0 -1
  132. package/dist/modules/common/services/template-engine.service.d.ts +0 -5
  133. package/dist/modules/common/services/template-engine.service.js.map +0 -1
  134. package/dist/modules/common/services/value-parser.service.d.ts +0 -19
  135. package/dist/modules/common/services/value-parser.service.js +0 -68
  136. package/dist/modules/common/services/value-parser.service.js.map +0 -1
  137. package/dist/modules/configuration/commands/generate-schemas.command.d.ts +0 -8
  138. package/dist/modules/configuration/commands/generate-schemas.command.js +0 -34
  139. package/dist/modules/configuration/commands/generate-schemas.command.js.map +0 -1
  140. package/dist/modules/workflow-processor/services/tool-schema-validator.service.d.ts +0 -5
  141. package/dist/modules/workflow-processor/services/tool-schema-validator.service.js +0 -41
  142. package/dist/modules/workflow-processor/services/tool-schema-validator.service.js.map +0 -1
@@ -0,0 +1,70 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ var HandlebarsProcessor_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.HandlebarsProcessor = void 0;
17
+ const handlebars_1 = __importDefault(require("handlebars"));
18
+ const common_1 = require("@nestjs/common");
19
+ const handlebars_helpers_1 = require("./handlebars-helpers");
20
+ let HandlebarsProcessor = class HandlebarsProcessor {
21
+ static { HandlebarsProcessor_1 = this; }
22
+ dateFormatterHandlebarsHelperService;
23
+ handlebars;
24
+ allowedHelpers = {
25
+ if: true,
26
+ else: true,
27
+ unless: true,
28
+ each: true,
29
+ with: false,
30
+ lookup: false,
31
+ currentDate: true,
32
+ formatDate: true,
33
+ timeAgo: true,
34
+ };
35
+ options = {
36
+ strict: false,
37
+ noEscape: true,
38
+ assumeObjects: false,
39
+ preventIndent: true,
40
+ knownHelpers: this.allowedHelpers,
41
+ knownHelpersOnly: true,
42
+ data: false,
43
+ explicitPartialContext: true,
44
+ compat: false,
45
+ ignoreStandalone: false,
46
+ };
47
+ static MAX_TEMPLATE_SIZE = 50000;
48
+ constructor(dateFormatterHandlebarsHelperService) {
49
+ this.dateFormatterHandlebarsHelperService = dateFormatterHandlebarsHelperService;
50
+ }
51
+ onModuleInit() {
52
+ this.handlebars = handlebars_1.default.create();
53
+ this.handlebars.registerHelper('currentDate', this.dateFormatterHandlebarsHelperService.getCurrentDateHelper());
54
+ this.handlebars.registerHelper('formatDate', this.dateFormatterHandlebarsHelperService.getFormatDateHelper());
55
+ this.handlebars.registerHelper('timeAgo', this.dateFormatterHandlebarsHelperService.getTimeAgoHelper());
56
+ }
57
+ render(content, variables) {
58
+ if (content.length > HandlebarsProcessor_1.MAX_TEMPLATE_SIZE) {
59
+ throw new Error(`Template too large`);
60
+ }
61
+ const template = this.handlebars.compile(content, this.options);
62
+ return template(variables);
63
+ }
64
+ };
65
+ exports.HandlebarsProcessor = HandlebarsProcessor;
66
+ exports.HandlebarsProcessor = HandlebarsProcessor = HandlebarsProcessor_1 = __decorate([
67
+ (0, common_1.Injectable)(),
68
+ __metadata("design:paramtypes", [handlebars_helpers_1.DateFormatterHandlebarsHelperService])
69
+ ], HandlebarsProcessor);
70
+ //# sourceMappingURL=handlebars-processor.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlebars-processor.service.js","sourceRoot":"","sources":["../../../../src/modules/common/services/handlebars-processor.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAAoC;AACpC,2CAA0D;AAC1D,6DAA4E;AAGrE,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;;IA4EX;IA3EX,UAAU,CAAoB;IAE9B,cAAc,GAAG;QAEvB,EAAE,EAAE,IAAI;QAGR,IAAI,EAAE,IAAI;QAGV,MAAM,EAAE,IAAI;QAGZ,IAAI,EAAE,IAAI;QAIV,IAAI,EAAE,KAAK;QAKX,MAAM,EAAE,KAAK;QAGb,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,IAAI;KACd,CAAC;IAEM,OAAO,GAAG;QAGhB,MAAM,EAAE,KAAK;QAIb,QAAQ,EAAE,IAAI;QAId,aAAa,EAAE,KAAK;QAIpB,aAAa,EAAE,IAAI;QAInB,YAAY,EAAE,IAAI,CAAC,cAAc;QAIjC,gBAAgB,EAAE,IAAI;QAItB,IAAI,EAAE,KAAK;QAIX,sBAAsB,EAAE,IAAI;QAI5B,MAAM,EAAE,KAAK;QAIb,gBAAgB,EAAE,KAAK;KACxB,CAAC;IAEM,MAAM,CAAU,iBAAiB,GAAG,KAAK,CAAC;IAElD,YACmB,oCAA0E;QAA1E,yCAAoC,GAApC,oCAAoC,CAAsC;IAC1F,CAAC;IAEJ,YAAY;QACV,IAAI,CAAC,UAAU,GAAG,oBAAU,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,cAAc,CAC5B,aAAa,EACb,IAAI,CAAC,oCAAoC,CAAC,oBAAoB,EAAE,CACjE,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,cAAc,CAC5B,YAAY,EACZ,IAAI,CAAC,oCAAoC,CAAC,mBAAmB,EAAE,CAChE,CAAC;QACF,IAAI,CAAC,UAAU,CAAC,cAAc,CAC5B,SAAS,EACT,IAAI,CAAC,oCAAoC,CAAC,gBAAgB,EAAE,CAC7D,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,OAAe,EAAE,SAA8B;QAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,qBAAmB,CAAC,iBAAiB,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAChE,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;;AAtGU,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;qCA6E8C,yDAAoC;GA5ElF,mBAAmB,CAuG/B"}
@@ -1,6 +1,7 @@
1
- export * from './expression-evaluator.service';
2
- export * from './schema-validator.service';
3
- export * from './template-engine.service';
4
- export * from './document-helper.service';
5
- export * from './value-parser.service';
6
1
  export * from './context.service';
2
+ export * from './template.service';
3
+ export * from './expression-handler/object-expression.handler';
4
+ export * from './expression-handler/template-expression.handler';
5
+ export * from './handlebars-processor.service';
6
+ export * from './handlebars-helpers';
7
+ export * from './variable-sanitizer.service';
@@ -14,10 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./expression-evaluator.service"), exports);
18
- __exportStar(require("./schema-validator.service"), exports);
19
- __exportStar(require("./template-engine.service"), exports);
20
- __exportStar(require("./document-helper.service"), exports);
21
- __exportStar(require("./value-parser.service"), exports);
22
17
  __exportStar(require("./context.service"), exports);
18
+ __exportStar(require("./template.service"), exports);
19
+ __exportStar(require("./expression-handler/object-expression.handler"), exports);
20
+ __exportStar(require("./expression-handler/template-expression.handler"), exports);
21
+ __exportStar(require("./handlebars-processor.service"), exports);
22
+ __exportStar(require("./handlebars-helpers"), exports);
23
+ __exportStar(require("./variable-sanitizer.service"), exports);
23
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/common/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA+C;AAC/C,6DAA2C;AAC3C,4DAA0C;AAC1C,4DAA0C;AAC1C,yDAAuC;AACvC,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/common/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,qDAAmC;AACnC,iFAA+D;AAC/D,mFAAiE;AACjE,iEAA+C;AAC/C,uDAAqC;AACrC,+DAA6C"}
@@ -0,0 +1,16 @@
1
+ import { ObjectExpressionHandler } from './expression-handler/object-expression.handler';
2
+ import { TemplateExpressionHandler } from './expression-handler/template-expression.handler';
3
+ export interface TemplateDetector {
4
+ canHandle(value: any): boolean;
5
+ }
6
+ export interface TemplateProcessor {
7
+ process(value: string, variables: Record<string, any>): any;
8
+ }
9
+ export declare class TemplateService {
10
+ private objectExpressionHandler;
11
+ private templateExpressionHandler;
12
+ private readonly handlers;
13
+ constructor(objectExpressionHandler: ObjectExpressionHandler, templateExpressionHandler: TemplateExpressionHandler);
14
+ evaluate(value: any, variables: Record<string, any>): any;
15
+ evaluateDeep<T = any>(obj: any, variables: Record<string, any>): T;
16
+ }
@@ -0,0 +1,64 @@
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.TemplateService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const object_expression_handler_1 = require("./expression-handler/object-expression.handler");
15
+ const template_expression_handler_1 = require("./expression-handler/template-expression.handler");
16
+ let TemplateService = class TemplateService {
17
+ objectExpressionHandler;
18
+ templateExpressionHandler;
19
+ handlers;
20
+ constructor(objectExpressionHandler, templateExpressionHandler) {
21
+ this.objectExpressionHandler = objectExpressionHandler;
22
+ this.templateExpressionHandler = templateExpressionHandler;
23
+ this.handlers = Object.freeze([
24
+ this.objectExpressionHandler,
25
+ this.templateExpressionHandler,
26
+ ]);
27
+ }
28
+ evaluate(value, variables) {
29
+ if (value == null || typeof value !== 'string') {
30
+ return value;
31
+ }
32
+ for (const handler of this.handlers) {
33
+ if (handler.canHandle(value)) {
34
+ return handler.process(value, variables);
35
+ }
36
+ }
37
+ return value;
38
+ }
39
+ evaluateDeep(obj, variables) {
40
+ if (obj == null) {
41
+ return obj;
42
+ }
43
+ if (Array.isArray(obj)) {
44
+ return obj.map((item) => {
45
+ return this.evaluateDeep(item, variables);
46
+ });
47
+ }
48
+ if (typeof obj === 'object') {
49
+ const result = {};
50
+ for (const [key, value] of Object.entries(obj)) {
51
+ result[key] = this.evaluateDeep(value, variables);
52
+ }
53
+ return result;
54
+ }
55
+ return this.evaluate(obj, variables);
56
+ }
57
+ };
58
+ exports.TemplateService = TemplateService;
59
+ exports.TemplateService = TemplateService = __decorate([
60
+ (0, common_1.Injectable)(),
61
+ __metadata("design:paramtypes", [object_expression_handler_1.ObjectExpressionHandler,
62
+ template_expression_handler_1.TemplateExpressionHandler])
63
+ ], TemplateService);
64
+ //# sourceMappingURL=template.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.service.js","sourceRoot":"","sources":["../../../../src/modules/common/services/template.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,8FAAyF;AACzF,kGAA6F;AAWtF,IAAM,eAAe,GAArB,MAAM,eAAe;IAMhB;IACA;IANO,QAAQ,CAEvB;IAEF,YACU,uBAAgD,EAChD,yBAAoD;QADpD,4BAAuB,GAAvB,uBAAuB,CAAyB;QAChD,8BAAyB,GAAzB,yBAAyB,CAA2B;QAE5D,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,uBAAuB;YAC5B,IAAI,CAAC,yBAAyB;SAC/B,CAAC,CAAC;IACL,CAAC;IAKD,QAAQ,CAAC,KAAU,EAAE,SAA8B;QAEjD,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QAGD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAGD,OAAO,KAAK,CAAC;IACf,CAAC;IAKD,YAAY,CAAU,GAAQ,EAAE,SAA8B;QAC5D,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC;QACb,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACtB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAC5C,CAAC,CAAM,CAAC;QACV,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAwB,EAAE,CAAC;YACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,MAAW,CAAC;QACrB,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAM,CAAC;IAC5C,CAAC;CACF,CAAA;AA3DY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAOwB,mDAAuB;QACrB,uDAAyB;GAPnD,eAAe,CA2D3B"}
@@ -0,0 +1,9 @@
1
+ export declare class VariableSanitizerService {
2
+ private readonly logger;
3
+ private readonly MAX_SANITIZATION_DEPTH;
4
+ sanitizeVariables(variables: Record<string, any>, depth?: number): Record<string, any>;
5
+ private shouldSkipProperty;
6
+ private sanitizeValue;
7
+ private sanitizeArray;
8
+ private isPlainObject;
9
+ }
@@ -0,0 +1,84 @@
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 VariableSanitizerService_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.VariableSanitizerService = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ let VariableSanitizerService = VariableSanitizerService_1 = class VariableSanitizerService {
13
+ logger = new common_1.Logger(VariableSanitizerService_1.name);
14
+ MAX_SANITIZATION_DEPTH = 20;
15
+ sanitizeVariables(variables, depth = 0) {
16
+ if (depth > this.MAX_SANITIZATION_DEPTH) {
17
+ this.logger.warn(`Sanitization depth limit reached: ${this.MAX_SANITIZATION_DEPTH}`);
18
+ return {};
19
+ }
20
+ const sanitized = {};
21
+ for (const [key, value] of Object.entries(variables)) {
22
+ if (this.shouldSkipProperty(key, value)) {
23
+ continue;
24
+ }
25
+ sanitized[key] = this.sanitizeValue(value, depth + 1);
26
+ }
27
+ return sanitized;
28
+ }
29
+ shouldSkipProperty(key, value) {
30
+ if (key.startsWith('__') ||
31
+ ['prototype', 'constructor', '__proto__'].includes(key)) {
32
+ return true;
33
+ }
34
+ if (typeof value === 'function') {
35
+ return true;
36
+ }
37
+ if (typeof value === 'symbol') {
38
+ return true;
39
+ }
40
+ return false;
41
+ }
42
+ sanitizeValue(value, depth) {
43
+ if (value === null || value === undefined) {
44
+ return value;
45
+ }
46
+ if (typeof value !== 'object') {
47
+ return value;
48
+ }
49
+ if (Array.isArray(value)) {
50
+ return this.sanitizeArray(value, depth);
51
+ }
52
+ if (value instanceof Date) {
53
+ return value;
54
+ }
55
+ if (value instanceof RegExp) {
56
+ return value.toString();
57
+ }
58
+ if (this.isPlainObject(value)) {
59
+ return this.sanitizeVariables(value, depth);
60
+ }
61
+ try {
62
+ return value.toString();
63
+ }
64
+ catch {
65
+ return null;
66
+ }
67
+ }
68
+ sanitizeArray(arr, depth) {
69
+ return arr
70
+ .filter((item) => typeof item !== 'function' && typeof item !== 'symbol')
71
+ .map((item) => this.sanitizeValue(item, depth));
72
+ }
73
+ isPlainObject(obj) {
74
+ if (typeof obj !== 'object' || obj === null) {
75
+ return false;
76
+ }
77
+ return true;
78
+ }
79
+ };
80
+ exports.VariableSanitizerService = VariableSanitizerService;
81
+ exports.VariableSanitizerService = VariableSanitizerService = VariableSanitizerService_1 = __decorate([
82
+ (0, common_1.Injectable)()
83
+ ], VariableSanitizerService);
84
+ //# sourceMappingURL=variable-sanitizer.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variable-sanitizer.service.js","sourceRoot":"","sources":["../../../../src/modules/common/services/variable-sanitizer.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AAG7C,IAAM,wBAAwB,gCAA9B,MAAM,wBAAwB;IAClB,MAAM,GAAG,IAAI,eAAM,CAAC,0BAAwB,CAAC,IAAI,CAAC,CAAC;IACnD,sBAAsB,GAAG,EAAE,CAAC;IAEtC,iBAAiB,CACtB,SAA8B,EAC9B,QAAgB,CAAC;QAGjB,IAAI,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,qCAAqC,IAAI,CAAC,sBAAsB,EAAE,CACnE,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,SAAS,GAAwB,EAAE,CAAC;QAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;gBACxC,SAAS;YACX,CAAC;YAED,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,kBAAkB,CAAC,GAAW,EAAE,KAAU;QAEhD,IACE,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YACpB,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EACvD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,aAAa,CAAC,KAAU,EAAE,KAAa;QAC7C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QAGD,IAAI,CAAC;YACH,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,GAAU,EAAE,KAAa;QAC7C,OAAO,GAAG;aACP,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,UAAU,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC;aACxE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC;IAEO,aAAa,CAAC,GAAQ;QAC5B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IAKd,CAAC;CACF,CAAA;AArGY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;GACA,wBAAwB,CAqGpC"}
@@ -27,8 +27,9 @@ exports.ConfigurationModule = ConfigurationModule = __decorate([
27
27
  json_schema_generator_service_1.JsonSchemaGeneratorService,
28
28
  generate_schema_command_1.GenerateSchemaCommand,
29
29
  dynamic_schema_generator_service_1.DynamicSchemaGeneratorService,
30
+ services_1.SchemaRegistry,
30
31
  ],
31
- exports: [services_1.ConfigurationService, services_2.ServiceRegistry],
32
+ exports: [services_1.ConfigurationService, services_2.ServiceRegistry, services_1.SchemaRegistry],
32
33
  })
33
34
  ], ConfigurationModule);
34
35
  //# sourceMappingURL=configuration.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.module.js","sourceRoot":"","sources":["../../../src/modules/configuration/configuration.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,yCAGoB;AACpB,4FAAsF;AACtF,yCAA6C;AAC7C,gFAA2E;AAC3E,kGAA4F;AAC5F,uCAA+C;AAcxC,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAAG,CAAA;AAAtB,kDAAmB;8BAAnB,mBAAmB;IAZ/B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAe,CAAC;QAC1B,SAAS,EAAE;YACT,0BAAe;YACf,iCAAsB;YACtB,+BAAoB;YACpB,0DAA0B;YAC1B,+CAAqB;YACrB,gEAA6B;SAC9B;QACD,OAAO,EAAE,CAAC,+BAAoB,EAAE,0BAAe,CAAC;KACjD,CAAC;GACW,mBAAmB,CAAG"}
1
+ {"version":3,"file":"configuration.module.js","sourceRoot":"","sources":["../../../src/modules/configuration/configuration.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,yCAIoB;AACpB,4FAAsF;AACtF,yCAA6C;AAC7C,gFAA2E;AAC3E,kGAA4F;AAC5F,uCAA+C;AAexC,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAAG,CAAA;AAAtB,kDAAmB;8BAAnB,mBAAmB;IAb/B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAe,CAAC;QAC1B,SAAS,EAAE;YACT,0BAAe;YACf,iCAAsB;YACtB,+BAAoB;YACpB,0DAA0B;YAC1B,+CAAqB;YACrB,gEAA6B;YAC7B,yBAAc;SACf;QACD,OAAO,EAAE,CAAC,+BAAoB,EAAE,0BAAe,EAAE,yBAAc,CAAC;KACjE,CAAC;GACW,mBAAmB,CAAG"}
@@ -2,28 +2,29 @@ import { OnModuleInit } from '@nestjs/common';
2
2
  import { DynamicSchemaGeneratorService } from './dynamic-schema-generator.service';
3
3
  import { ServiceRegistry } from './service-registry.service';
4
4
  import { ConfigService } from '@nestjs/config';
5
- import { ConfigSourceInterface, NamedCollectionItem } from '@loopstack/shared';
5
+ import { ConfigElement } from '@loopstack/shared';
6
6
  import { ConfigProviderRegistry } from './config-provider.registry';
7
+ import { SchemaRegistry } from './schema-registry.service';
7
8
  export declare class ConfigurationService implements OnModuleInit {
8
9
  private configService;
9
10
  private serviceRegistry;
10
11
  private configProviderRegistry;
11
12
  private mainSchemaGenerator;
13
+ private schemaRegistry;
12
14
  private logger;
13
- registry: Map<string, Map<string, any>>;
14
- constructor(configService: ConfigService, serviceRegistry: ServiceRegistry, configProviderRegistry: ConfigProviderRegistry, mainSchemaGenerator: DynamicSchemaGeneratorService);
15
+ registry: Map<string, Map<string, ConfigElement<any>>>;
16
+ constructor(configService: ConfigService, serviceRegistry: ServiceRegistry, configProviderRegistry: ConfigProviderRegistry, mainSchemaGenerator: DynamicSchemaGeneratorService, schemaRegistry: SchemaRegistry);
15
17
  onModuleInit(): void;
16
- createDefaultConfig(): Map<string, Map<any, any>>;
17
- clear(): void;
18
- updateConfig(key: string, data: NamedCollectionItem[]): void;
18
+ private registerCustomSchema;
19
+ private createDefaultConfig;
20
+ private clear;
21
+ private registerConfig;
19
22
  has(registry: string, name: string): boolean;
20
- getAll<T>(registry: string): T[];
21
- get<T>(registry: string, searchKey: string): T | undefined;
22
- createFromConfig(source: ConfigSourceInterface): any;
23
- private createPipelineEntrypointValidation;
24
- private createPipelineWorkspaceValidation;
25
- private createWorkflowToolCallValidation;
26
- private createWorkflowTemplateToolCallValidation;
27
- validate(source: ConfigSourceInterface): any;
23
+ getAll<T>(registry: string): ConfigElement<T>[];
24
+ get<T>(registry: string, searchKey: string): ConfigElement<T> | undefined;
25
+ resolveConfig<T>(type: string, name: string, includes: Map<string, string>): ConfigElement<T>;
26
+ private resolveConfigName;
27
+ private createFromConfig;
28
+ private validate;
28
29
  private handleConfigError;
29
30
  }
@@ -17,18 +17,21 @@ const service_registry_service_1 = require("./service-registry.service");
17
17
  const config_1 = require("@nestjs/config");
18
18
  const config_provider_registry_1 = require("./config-provider.registry");
19
19
  const zod_1 = require("zod");
20
+ const schema_registry_service_1 = require("./schema-registry.service");
20
21
  let ConfigurationService = ConfigurationService_1 = class ConfigurationService {
21
22
  configService;
22
23
  serviceRegistry;
23
24
  configProviderRegistry;
24
25
  mainSchemaGenerator;
26
+ schemaRegistry;
25
27
  logger = new common_1.Logger(ConfigurationService_1.name);
26
28
  registry;
27
- constructor(configService, serviceRegistry, configProviderRegistry, mainSchemaGenerator) {
29
+ constructor(configService, serviceRegistry, configProviderRegistry, mainSchemaGenerator, schemaRegistry) {
28
30
  this.configService = configService;
29
31
  this.serviceRegistry = serviceRegistry;
30
32
  this.configProviderRegistry = configProviderRegistry;
31
33
  this.mainSchemaGenerator = mainSchemaGenerator;
34
+ this.schemaRegistry = schemaRegistry;
32
35
  }
33
36
  onModuleInit() {
34
37
  const installTemplates = this.configService.get('installTemplates');
@@ -40,16 +43,61 @@ let ConfigurationService = ConfigurationService_1 = class ConfigurationService {
40
43
  this.serviceRegistry.initialize();
41
44
  const appConfigs = this.configService.get('configs') ?? [];
42
45
  const moduleConfigs = this.configProviderRegistry.getConfigs();
43
- const configs = [...appConfigs, ...moduleConfigs];
44
- if (!configs) {
46
+ const configSources = [
47
+ ...appConfigs,
48
+ ...moduleConfigs,
49
+ ];
50
+ if (!configSources.length) {
45
51
  return;
46
52
  }
47
- for (const config of configs) {
48
- this.createFromConfig(config);
49
- }
50
- for (const config of configs) {
53
+ for (const config of configSources) {
51
54
  this.validate(config);
52
55
  }
56
+ const configSourcesElements = new Map([]);
57
+ for (const config of configSources) {
58
+ const { include, items } = this.createFromConfig(config);
59
+ const itemsMap = new Map(items.map((element) => [element.name, element]));
60
+ configSourcesElements.set(config.relativePath, {
61
+ path: config.relativePath,
62
+ items: itemsMap,
63
+ include,
64
+ });
65
+ }
66
+ const flatConfigElementMap = new Map([]);
67
+ for (const file of Array.from(configSourcesElements.values())) {
68
+ const { items, include } = file;
69
+ const importMap = new Map([]);
70
+ for (const includePath of include) {
71
+ const importSource = configSourcesElements.get(includePath);
72
+ if (importSource) {
73
+ for (const importSourceElement of Array.from(importSource.items.values())) {
74
+ importMap.set(importSourceElement.name, importSourceElement.path);
75
+ }
76
+ }
77
+ }
78
+ for (const item of items.values()) {
79
+ importMap.set(item.name, item.path);
80
+ }
81
+ for (const item of items.values()) {
82
+ item.importMap = importMap;
83
+ flatConfigElementMap.set(`${item.path}:${item.name}`, item);
84
+ }
85
+ }
86
+ for (const [globalName, configElement] of Array.from(flatConfigElementMap.entries())) {
87
+ this.registerConfig(globalName, configElement);
88
+ }
89
+ for (const tool of this.getAll('tools')) {
90
+ this.registerCustomSchema(`${tool.name}.arguments`, tool.config.parameters);
91
+ }
92
+ for (const document of this.getAll('documents')) {
93
+ this.registerCustomSchema(`${document.name}.content`, document.config.schema);
94
+ }
95
+ this.logger.debug(`Registered ${this.schemaRegistry.getSize()} custom schemas.`);
96
+ }
97
+ registerCustomSchema(key, schema) {
98
+ if (schema) {
99
+ this.schemaRegistry.addJSONSchema(key, schema);
100
+ }
53
101
  }
54
102
  createDefaultConfig() {
55
103
  return new Map(Object.entries({
@@ -64,20 +112,16 @@ let ConfigurationService = ConfigurationService_1 = class ConfigurationService {
64
112
  clear() {
65
113
  this.registry = this.createDefaultConfig();
66
114
  }
67
- updateConfig(key, data) {
68
- if (!data || !Array.isArray(data)) {
69
- return;
115
+ registerConfig(globalName, configElement) {
116
+ const type = configElement.type;
117
+ if (!this.registry.has(type)) {
118
+ this.registry.set(type, new Map());
70
119
  }
71
- if (!this.registry.has(key)) {
72
- this.registry.set(key, new Map());
73
- }
74
- const config = this.registry.get(key);
75
- for (const item of data) {
76
- if (config.has(item.name)) {
77
- throw new Error(`item with name "${item.name}" already exists.`);
78
- }
79
- config.set(item.name, item);
120
+ const config = this.registry.get(type);
121
+ if (config.has(globalName)) {
122
+ throw new Error(`item with name "${globalName}" already exists.`);
80
123
  }
124
+ config.set(globalName, configElement);
81
125
  }
82
126
  has(registry, name) {
83
127
  const config = this.registry.get(registry);
@@ -97,105 +141,50 @@ let ConfigurationService = ConfigurationService_1 = class ConfigurationService {
97
141
  }
98
142
  return config.get(searchKey);
99
143
  }
144
+ resolveConfig(type, name, includes) {
145
+ const resolvedName = this.resolveConfigName(name, includes);
146
+ const configElement = this.get(type, resolvedName);
147
+ if (!configElement) {
148
+ throw new Error(`Config for ${resolvedName} not found.`);
149
+ }
150
+ return configElement;
151
+ }
152
+ resolveConfigName(name, includes) {
153
+ const resolvedPath = includes.get(name);
154
+ if (resolvedPath) {
155
+ return `${resolvedPath}:${name}`;
156
+ }
157
+ return name;
158
+ }
100
159
  createFromConfig(source) {
101
160
  try {
102
161
  const config = this.mainSchemaGenerator
103
162
  .getSchema()
104
163
  .parse(source.config);
105
- Object.entries(config).forEach(([key, value]) => {
106
- this.updateConfig(key, value);
107
- });
164
+ const { include, ...cleanConfig } = config;
165
+ const items = Object.entries(cleanConfig)
166
+ .map(([key, data]) => {
167
+ return data.map((item) => ({
168
+ name: item.name,
169
+ path: source.relativePath,
170
+ type: key,
171
+ importMap: new Map(),
172
+ config: item,
173
+ }));
174
+ })
175
+ .flat();
176
+ return {
177
+ items,
178
+ include: include ?? [],
179
+ };
108
180
  }
109
181
  catch (error) {
110
182
  this.handleConfigError(error, source.path);
111
183
  }
112
184
  }
113
- createPipelineEntrypointValidation() {
114
- return zod_1.z.any().refine((data) => {
115
- if (!data.pipelines) {
116
- return true;
117
- }
118
- return data.pipelines.every((pipeline) => undefined !== this.get('workflows', pipeline.entrypoint));
119
- }, (data) => {
120
- const invalidIndex = data.pipelines?.findIndex((pipeline) => undefined === this.get('workspaces', pipeline.workspace)) ?? -1;
121
- return {
122
- message: `pipeline references non-existent workflow.`,
123
- path: ['pipelines', invalidIndex, 'entrypoint'],
124
- };
125
- });
126
- }
127
- createPipelineWorkspaceValidation() {
128
- return zod_1.z.any().refine((data) => {
129
- if (!data.pipelines) {
130
- return true;
131
- }
132
- return data.pipelines.every((pipeline) => undefined !== this.get('workspaces', pipeline.workspace));
133
- }, (data) => {
134
- const invalidIndex = data.pipelines?.findIndex((pipeline) => undefined === this.get('workspaces', pipeline.workspace)) ?? -1;
135
- return {
136
- message: `pipeline references non-existent workspace.`,
137
- path: ['pipelines', invalidIndex, 'workspace'],
138
- };
139
- });
140
- }
141
- createWorkflowToolCallValidation() {
142
- return zod_1.z.any().refine((data) => {
143
- if (!data.workflows) {
144
- return true;
145
- }
146
- const toolCalls = data.workflows
147
- .map((wf) => wf.type === 'stateMachine' ? wf.transitions?.map((h) => h.call?.map((call) => call.tool)) : [])
148
- .flat(2)
149
- .filter((toolName) => undefined !== toolName);
150
- return toolCalls.every((toolName) => undefined !== this.get('tools', toolName));
151
- }, (data) => {
152
- const toolCalls = data.workflows.map((wf) => wf.type === 'stateMachine' ? wf.transitions?.map((h) => h.call?.map((call) => call.tool)) : [])
153
- .flat(2)
154
- .filter((toolName) => undefined !== toolName);
155
- const errorItem = toolCalls
156
- .find((toolName) => undefined === this.get('tools', toolName));
157
- return {
158
- message: `workflow handler references non-existent tool "${errorItem.tool}".`,
159
- path: ['workflows', 'handlers'],
160
- };
161
- });
162
- }
163
- createWorkflowTemplateToolCallValidation() {
164
- return zod_1.z.any().refine((data) => {
165
- if (!data.workflowTemplates) {
166
- return true;
167
- }
168
- const stateMachineWorkflows = data.workflowTemplates.filter((wf) => wf.type === 'stateMachine');
169
- const templateIndex = stateMachineWorkflows.findIndex((wf) => wf.transitions &&
170
- wf.transitions.find((t) => t.call?.find((call) => !this.has('tools', call.tool))));
171
- return templateIndex === -1;
172
- }, (data) => {
173
- const stateMachineWorkflows = data.workflowTemplates.filter((wf) => wf.type === 'stateMachine');
174
- const templateIndex = stateMachineWorkflows.findIndex((wf) => wf.transitions &&
175
- wf.transitions.find((t) => t.call?.find((call) => !this.has('tools', call.tool))));
176
- const transitionIndex = stateMachineWorkflows[templateIndex].transitions.findIndex((t) => t.call?.find((call) => !this.has('tools', call.tool)));
177
- const wrongToolName = stateMachineWorkflows[templateIndex].transitions[transitionIndex].call?.find((call) => !this.has('tools', call.tool));
178
- return {
179
- message: `state machine template transition references non-existent tool "${wrongToolName}".`,
180
- path: [
181
- 'workflowTemplates',
182
- templateIndex,
183
- 'transitions',
184
- transitionIndex,
185
- 'call',
186
- ],
187
- };
188
- });
189
- }
190
185
  validate(source) {
191
186
  try {
192
- this.mainSchemaGenerator
193
- .getSchema()
194
- .and(this.createPipelineEntrypointValidation())
195
- .and(this.createPipelineWorkspaceValidation())
196
- .and(this.createWorkflowToolCallValidation())
197
- .and(this.createWorkflowTemplateToolCallValidation())
198
- .parse(source.config);
187
+ this.mainSchemaGenerator.getSchema().parse(source.config);
199
188
  }
200
189
  catch (error) {
201
190
  this.handleConfigError(error, source.path);
@@ -219,6 +208,7 @@ exports.ConfigurationService = ConfigurationService = ConfigurationService_1 = _
219
208
  __metadata("design:paramtypes", [config_1.ConfigService,
220
209
  service_registry_service_1.ServiceRegistry,
221
210
  config_provider_registry_1.ConfigProviderRegistry,
222
- dynamic_schema_generator_service_1.DynamicSchemaGeneratorService])
211
+ dynamic_schema_generator_service_1.DynamicSchemaGeneratorService,
212
+ schema_registry_service_1.SchemaRegistry])
223
213
  ], ConfigurationService);
224
214
  //# sourceMappingURL=configuration.service.js.map