@decaf-ts/integrations 0.3.4 → 0.3.5

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 (99) hide show
  1. package/dist/integrations.cjs +3 -3
  2. package/dist/integrations.js +3 -3
  3. package/lib/cjs/graph/execution/CodeSandboxEvaluator.cjs +4 -0
  4. package/lib/cjs/graph/execution/GraphExecutionEngine.cjs +3 -2
  5. package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +95 -0
  6. package/lib/cjs/graph/execution/index.cjs +4 -2
  7. package/lib/cjs/graph/index.cjs +7 -2
  8. package/lib/cjs/graph/loops/ConditionExpressionEvaluator.cjs +87 -0
  9. package/lib/cjs/graph/loops/GraphConditionEvaluator.cjs +25 -3
  10. package/lib/cjs/graph/loops/index.cjs +3 -2
  11. package/lib/cjs/graph/nodes/agent.cjs +110 -0
  12. package/lib/cjs/graph/nodes/category-styles.cjs +38 -0
  13. package/lib/cjs/graph/nodes/flow-control.cjs +436 -0
  14. package/lib/cjs/graph/nodes/index.cjs +34 -0
  15. package/lib/cjs/graph/nodes/triggers.cjs +250 -0
  16. package/lib/cjs/graph/types.cjs +2 -2
  17. package/lib/cjs/index.cjs +3 -3
  18. package/lib/cjs/keycloak/services/KeycloakAuthService.cjs +5 -4
  19. package/lib/cjs/keycloak/services/KeycloakClientService.cjs +5 -4
  20. package/lib/cjs/keycloak/services/KeycloakIdentityProviderService.cjs +5 -4
  21. package/lib/cjs/keycloak/services/KeycloakRealmService.cjs +8 -7
  22. package/lib/cjs/keycloak/services/KeycloakRoleService.cjs +5 -4
  23. package/lib/cjs/keycloak/services/KeycloakService.cjs +5 -3
  24. package/lib/cjs/keycloak/services/KeycloakUserService.cjs +5 -4
  25. package/lib/cjs/keycloak/services/runtime.cjs +20 -0
  26. package/lib/cjs/kibana/services/KibanaAuthService.cjs +6 -5
  27. package/lib/cjs/kibana/services/KibanaDashboardService.cjs +9 -8
  28. package/lib/cjs/kibana/services/KibanaDataViewService.cjs +7 -6
  29. package/lib/cjs/kibana/services/KibanaRoleService.cjs +5 -4
  30. package/lib/cjs/kibana/services/KibanaService.cjs +4 -2
  31. package/lib/cjs/kibana/services/KibanaSpaceService.cjs +5 -4
  32. package/lib/cjs/kibana/services/KibanaUserService.cjs +5 -4
  33. package/lib/cjs/kibana/services/runtime.cjs +20 -0
  34. package/lib/esm/graph/execution/CodeSandboxEvaluator.js +18 -0
  35. package/lib/esm/graph/execution/GraphExecutionEngine.js +2 -1
  36. package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +90 -0
  37. package/lib/esm/graph/execution/index.js +3 -1
  38. package/lib/esm/graph/index.js +6 -1
  39. package/lib/esm/graph/loops/ConditionExpressionEvaluator.js +82 -0
  40. package/lib/esm/graph/loops/GraphConditionEvaluator.js +24 -2
  41. package/lib/esm/graph/loops/index.js +2 -1
  42. package/lib/esm/graph/nodes/agent.js +101 -0
  43. package/lib/esm/graph/nodes/category-styles.js +34 -0
  44. package/lib/esm/graph/nodes/flow-control.js +427 -0
  45. package/lib/esm/graph/nodes/index.js +17 -0
  46. package/lib/esm/graph/nodes/triggers.js +241 -0
  47. package/lib/esm/graph/types.js +1 -1
  48. package/lib/esm/index.js +3 -3
  49. package/lib/esm/keycloak/services/KeycloakAuthService.js +4 -3
  50. package/lib/esm/keycloak/services/KeycloakClientService.js +4 -3
  51. package/lib/esm/keycloak/services/KeycloakIdentityProviderService.js +4 -3
  52. package/lib/esm/keycloak/services/KeycloakRealmService.js +4 -3
  53. package/lib/esm/keycloak/services/KeycloakRoleService.js +4 -3
  54. package/lib/esm/keycloak/services/KeycloakService.js +4 -2
  55. package/lib/esm/keycloak/services/KeycloakUserService.js +4 -3
  56. package/lib/esm/keycloak/services/runtime.js +15 -0
  57. package/lib/esm/kibana/services/KibanaAuthService.js +5 -4
  58. package/lib/esm/kibana/services/KibanaDashboardService.js +5 -4
  59. package/lib/esm/kibana/services/KibanaDataViewService.js +4 -3
  60. package/lib/esm/kibana/services/KibanaRoleService.js +4 -3
  61. package/lib/esm/kibana/services/KibanaService.js +3 -1
  62. package/lib/esm/kibana/services/KibanaSpaceService.js +4 -3
  63. package/lib/esm/kibana/services/KibanaUserService.js +4 -3
  64. package/lib/esm/kibana/services/runtime.js +15 -0
  65. package/lib/types/graph/execution/CodeSandboxEvaluator.d.cts +53 -0
  66. package/lib/types/graph/execution/CodeSandboxEvaluator.d.mts +53 -0
  67. package/lib/types/graph/execution/GraphExecutionEngine.d.cts +10 -0
  68. package/lib/types/graph/execution/GraphExecutionEngine.d.mts +10 -0
  69. package/lib/types/graph/execution/SwitchGraphNodeExecutor.d.cts +42 -0
  70. package/lib/types/graph/execution/SwitchGraphNodeExecutor.d.mts +42 -0
  71. package/lib/types/graph/execution/index.d.cts +2 -0
  72. package/lib/types/graph/execution/index.d.mts +2 -0
  73. package/lib/types/graph/index.d.cts +4 -0
  74. package/lib/types/graph/index.d.mts +4 -0
  75. package/lib/types/graph/loops/ConditionExpressionEvaluator.d.cts +36 -0
  76. package/lib/types/graph/loops/ConditionExpressionEvaluator.d.mts +36 -0
  77. package/lib/types/graph/loops/GraphConditionEvaluator.d.cts +20 -4
  78. package/lib/types/graph/loops/GraphConditionEvaluator.d.mts +20 -4
  79. package/lib/types/graph/loops/index.d.cts +1 -0
  80. package/lib/types/graph/loops/index.d.mts +1 -0
  81. package/lib/types/graph/nodes/agent.d.cts +44 -0
  82. package/lib/types/graph/nodes/agent.d.mts +44 -0
  83. package/lib/types/graph/nodes/category-styles.d.cts +8 -0
  84. package/lib/types/graph/nodes/category-styles.d.mts +8 -0
  85. package/lib/types/graph/nodes/flow-control.d.cts +104 -0
  86. package/lib/types/graph/nodes/flow-control.d.mts +104 -0
  87. package/lib/types/graph/nodes/index.d.cts +16 -0
  88. package/lib/types/graph/nodes/index.d.mts +16 -0
  89. package/lib/types/graph/nodes/triggers.d.cts +53 -0
  90. package/lib/types/graph/nodes/triggers.d.mts +53 -0
  91. package/lib/types/graph/types.d.cts +102 -0
  92. package/lib/types/graph/types.d.mts +102 -0
  93. package/lib/types/index.d.cts +2 -2
  94. package/lib/types/index.d.mts +2 -2
  95. package/lib/types/keycloak/services/runtime.d.cts +6 -0
  96. package/lib/types/keycloak/services/runtime.d.mts +6 -0
  97. package/lib/types/kibana/services/runtime.d.cts +6 -0
  98. package/lib/types/kibana/services/runtime.d.mts +6 -0
  99. package/package.json +1 -1
@@ -11,6 +11,7 @@ import { BadRequestError, ConflictError, InternalError, NotFoundError, } from "@
11
11
  import { ClientBasedService, service } from "@decaf-ts/core";
12
12
  import Axios from "axios";
13
13
  import * as https from "node:https";
14
+ import { resolveKibanaIsProduction } from "./runtime.js";
14
15
  import { KibanaAuthService } from "./KibanaAuthService.js";
15
16
  export class KibanaUserService extends ClientBasedService {
16
17
  async initialize(...args) {
@@ -86,7 +87,7 @@ export class KibanaUserService extends ClientBasedService {
86
87
  baseURL: `${config.protocol}://${config.host}`,
87
88
  validateStatus: () => true,
88
89
  httpsAgent: new https.Agent({
89
- rejectUnauthorized: (this.config.isProduction()),
90
+ rejectUnauthorized: (resolveKibanaIsProduction(this.config)),
90
91
  }),
91
92
  });
92
93
  }
@@ -136,7 +137,7 @@ export class KibanaUserService extends ClientBasedService {
136
137
  : undefined,
137
138
  validateStatus: () => true,
138
139
  httpsAgent: new https.Agent({
139
- rejectUnauthorized: (this.config.isProduction()),
140
+ rejectUnauthorized: (resolveKibanaIsProduction(this.config)),
140
141
  }),
141
142
  ...extra,
142
143
  });
@@ -146,4 +147,4 @@ __decorate([
146
147
  service(),
147
148
  __metadata("design:type", KibanaAuthService)
148
149
  ], KibanaUserService.prototype, "authService", void 0);
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS2liYW5hVXNlclNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMva2liYW5hL3NlcnZpY2VzL0tpYmFuYVVzZXJTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0QsT0FBTyxLQUF3QixNQUFNLE9BQU8sQ0FBQztBQUM3QyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsK0JBQTRCO0FBRXhELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxrQkFHdEM7SUFJQyxLQUFLLENBQUMsVUFBVSxDQUNkLEdBQUcsSUFBNkI7UUFFaEMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQ25FLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7UUFDRixNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFzQixDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVSxDQUNkLElBQWdCLEVBQ2hCLFNBQWlCLEVBQ2pCLFNBQStCLEVBQy9CLEdBQUcsSUFBNkI7UUFF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e1xuICBCYWRSZXF1ZXN0RXJyb3IsXG4gIENvbmZsaWN0RXJyb3IsXG4gIEludGVybmFsRXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQ29udGV4dHVhbEFyZ3MsIE1heWJlQ29udGV4dHVhbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQ2xpZW50QmFzZWRTZXJ2aWNlLCBzZXJ2aWNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IEtpYmFuYVNldHVwQ29uZmlnLCBLaWJhbmFVc2VyIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgQXhpb3MsIHsgQXhpb3NJbnN0YW5jZSB9IGZyb20gXCJheGlvc1wiO1xuaW1wb3J0ICogYXMgaHR0cHMgZnJvbSBcIm5vZGU6aHR0cHNcIjtcbmltcG9ydCB7IEtpYmFuYUF1dGhTZXJ2aWNlIH0gZnJvbSBcIi4vS2liYW5hQXV0aFNlcnZpY2VcIjtcblxuZXhwb3J0IGNsYXNzIEtpYmFuYVVzZXJTZXJ2aWNlIGV4dGVuZHMgQ2xpZW50QmFzZWRTZXJ2aWNlPFxuICBBeGlvc0luc3RhbmNlLFxuICBLaWJhbmFTZXR1cENvbmZpZ1xuPiB7XG4gIEBzZXJ2aWNlKClcbiAgcHJvdGVjdGVkIGF1dGhTZXJ2aWNlITogS2liYW5hQXV0aFNlcnZpY2U7XG5cbiAgYXN5bmMgaW5pdGlhbGl6ZShcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPHsgY29uZmlnOiBLaWJhbmFTZXR1cENvbmZpZzsgY2xpZW50OiBBeGlvc0luc3RhbmNlIH0+IHtcbiAgICBjb25zdCB7IGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcImluaXRpYWxpemVcIiwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVxuICAgICk7XG4gICAgY29uc3QgY29uZmlnID0gY3R4QXJnc1swXSBhcyBLaWJhbmFTZXR1cENvbmZpZztcbiAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XG4gICAgY29uc3QgY2xpZW50ID0gdGhpcy5jcmVhdGVIdHRwQ2xpZW50KGNvbmZpZyk7XG4gICAgdGhpcy5fY2xpZW50ID0gY2xpZW50O1xuICAgIHJldHVybiB7IGNvbmZpZywgY2xpZW50IH07XG4gIH1cblxuICBhc3luYyBjcmVhdGVVc2VyKFxuICAgIHVzZXI6IEtpYmFuYVVzZXIsXG4gICAgcmVhbG1OYW1lOiBzdHJpbmcsXG4gICAgcm9sZU5hbWVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcImNyZWF0ZVVzZXJcIiwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMuY3JlYXRlVXNlclxuICAgICk7XG4gICAgY29uc3QgZGVmYXVsdFJvbGUgPSB0aGlzLm5vcm1hbGl6ZVJvbGVDb25maWcocmVhbG1OYW1lKS5uYW1lO1xuICAgIGNvbnN0IHBheWxvYWRSb2xlcyA9XG4gICAgICByb2xlTmFtZXMgJiYgcm9sZU5hbWVzLmxlbmd0aCA+IDAgPyByb2xlTmFtZXMgOiBbZGVmYXVsdFJvbGVdO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFxuICAgICAgXCJQT1NUXCIsXG4gICAgICBgJHt0aGlzLmNvbmZpZy5wcm90b2NvbH06Ly8ke3RoaXMuY29uZmlnLmVzX2hvc3R9L19zZWN1cml0eS91c2VyLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHVzZXIudXNlcm5hbWUpfWAsXG4gICAgICB7XG4gICAgICAgIHBhc3N3b3JkOiB1c2VyLnBhc3N3b3JkLFxuICAgICAgICBmdWxsX25hbWU6IHVzZXIuZnVsbF9uYW1lLFxuICAgICAgICBlbWFpbDogdXNlci5lbWFpbCxcbiAgICAgICAgZW5hYmxlZDogdXNlci5lbmFibGVkID8/IHRydWUsXG4gICAgICAgIG1ldGFkYXRhOiB1c2VyLm1ldGFkYXRhID8/IHt9LFxuICAgICAgICByb2xlczogdXNlci5yb2xlcyA/PyBwYXlsb2FkUm9sZXMsXG4gICAgICB9LFxuICAgICAgdGhpcy5jb25maWcuYWRtaW5BcGlVc2VyLFxuICAgICAgeyBoZWFkZXJzOiB7IFwia2JuLXhzcmZcIjogXCJ0cnVlXCIsIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0gfSxcbiAgICAgIDIwMCxcbiAgICAgIC4uLmN0eEFyZ3NcbiAgICApO1xuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPj0gMzAwKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFVuYWJsZSB0byBjcmVhdGUgdXNlciAke3VzZXIudXNlcm5hbWV9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YDtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1cyBhcyBudW1iZXI7XG4gICAgICBpZiAoc3RhdHVzID09PSA0MDQgfHwgbWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwibm90IGZvdW5kXCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXR1cyA9PT0gNDA5IHx8IG1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImNvbmZsaWN0XCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBDb25mbGljdEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgIHRocm93IG5ldyBCYWRSZXF1ZXN0RXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdHVzID09PSA0MDEgfHwgc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGVVc2VyKFxuICAgIHVzZXI6IEtpYmFuYVVzZXIsXG4gICAgcmVhbG1OYW1lOiBzdHJpbmcsXG4gICAgcm9sZU5hbWVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCxcbiAgICAuLi5hcmdzOiBNYXliZUNvbnRleHR1YWxBcmc8YW55PlxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB7IGN0eEFyZ3MgfSA9IChhd2FpdCB0aGlzLmxvZ0N0eChhcmdzLCBcInVwZGF0ZVVzZXJcIiwgdHJ1ZSkpLmZvcihcbiAgICAgIHRoaXMudXBkYXRlVXNlclxuICAgICk7XG4gICAgY29uc3QgZGVmYXVsdFJvbGUgPSB0aGlzLm5vcm1hbGl6ZVJvbGVDb25maWcocmVhbG1OYW1lKS5uYW1lO1xuICAgIGNvbnN0IHBheWxvYWRSb2xlcyA9XG4gICAgICByb2xlTmFtZXMgJiYgcm9sZU5hbWVzLmxlbmd0aCA+IDAgPyByb2xlTmFtZXMgOiBbZGVmYXVsdFJvbGVdO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5yZXF1ZXN0KFxuICAgICAgXCJQVVRcIixcbiAgICAgIGAke3RoaXMuY29uZmlnLnByb3RvY29sfTovLyR7dGhpcy5jb25maWcuZXNfaG9zdH0vX3NlY3VyaXR5L3VzZXIvJHtlbmNvZGVVUklDb21wb25lbnQodXNlci51c2VybmFtZSl9YCxcbiAgICAgIHtcbiAgICAgICAgcGFzc3dvcmQ6IHVzZXIucGFzc3dvcmQsXG4gICAgICAgIGZ1bGxfbmFtZTogdXNlci5mdWxsX25hbWUsXG4gICAgICAgIGVtYWlsOiB1c2VyLmVtYWlsLFxuICAgICAgICBlbmFibGVkOiB1c2VyLmVuYWJsZWQgPz8gdHJ1ZSxcbiAgICAgICAgbWV0YWRhdGE6IHVzZXIubWV0YWRhdGEgPz8ge30sXG4gICAgICAgIHJvbGVzOiB1c2VyLnJvbGVzID8/IHBheWxvYWRSb2xlcyxcbiAgICAgIH0sXG4gICAgICB0aGlzLmNvbmZpZy5hZG1pbkFwaVVzZXIsXG4gICAgICB7IGhlYWRlcnM6IHsgXCJrYm4teHNyZlwiOiBcInRydWVcIiwgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSB9LFxuICAgICAgMjAwLFxuICAgICAgLi4uY3R4QXJnc1xuICAgICk7XG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA+PSAzMDApIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgVW5hYmxlIHRvIHVwZGF0ZSB1c2VyICR7dXNlci51c2VybmFtZX06ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gO1xuICAgICAgY29uc3Qgc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzIGFzIG51bWJlcjtcbiAgICAgIGlmIChzdGF0dXMgPT09IDQwNCB8fCBtZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJub3QgZm91bmRcIikpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdHVzID09PSA0MDkgfHwgbWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwiY29uZmxpY3RcIikpIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbmZsaWN0RXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdHVzID09PSA0MDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0dXMgPT09IDQwMSB8fCBzdGF0dXMgPT09IDQwMykge1xuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlSHR0cENsaWVudChjb25maWc6IEtpYmFuYVNldHVwQ29uZmlnKTogQXhpb3NJbnN0YW5jZSB7XG4gICAgcmV0dXJuIEF4aW9zLmNyZWF0ZSh7XG4gICAgICBiYXNlVVJMOiBgJHtjb25maWcucHJvdG9jb2x9Oi8vJHtjb25maWcuaG9zdH1gLFxuICAgICAgdmFsaWRhdGVTdGF0dXM6ICgpID0+IHRydWUsXG4gICAgICBodHRwc0FnZW50OiBuZXcgaHR0cHMuQWdlbnQoe1xuICAgICAgICByZWplY3RVbmF1dGhvcml6ZWQ6ICgodGhpcy5jb25maWcgYXMgYW55KS5pc1Byb2R1Y3Rpb24oKSksXG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUVycm9yKGVycm9yOiBFcnJvcik6IEVycm9yIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IubWVzc2FnZSB8fCBlcnJvci5uYW1lIHx8IFwiVW5rbm93biBlcnJvclwiO1xuICAgIGNvbnN0IGxvd2VyTWVzc2FnZSA9IG1lc3NhZ2UudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmIChsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJub3QgZm91bmRcIikgfHwgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiNDA0XCIpKSB7XG4gICAgICByZXR1cm4gbmV3IE5vdEZvdW5kRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiYWxyZWFkeSBleGlzdHNcIikgfHxcbiAgICAgIGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcImNvbmZsaWN0XCIpIHx8XG4gICAgICBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCI0MDlcIilcbiAgICApIHtcbiAgICAgIHJldHVybiBuZXcgQ29uZmxpY3RFcnJvcihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJpbnZhbGlkXCIpIHx8XG4gICAgICBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJiYWQgcmVxdWVzdFwiKSB8fFxuICAgICAgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiNDAwXCIpXG4gICAgKSB7XG4gICAgICByZXR1cm4gbmV3IEJhZFJlcXVlc3RFcnJvcihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBpZiAobG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwidW5hdXRob3JpemVkXCIpIHx8IGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcIjQwMVwiKSkge1xuICAgICAgcmV0dXJuIG5ldyBOb3RGb3VuZEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmIChsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJmb3JiaWRkZW5cIikgfHwgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiNDAzXCIpKSB7XG4gICAgICByZXR1cm4gbmV3IE5vdEZvdW5kRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbnRlcm5hbEVycm9yKG1lc3NhZ2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVSb2xlQ29uZmlnKFxuICAgIHJlYWxtTmFtZTogc3RyaW5nLFxuICAgIHBheWxvYWQ6IFBhcnRpYWw8eyBuYW1lPzogc3RyaW5nIH0+ID0ge31cbiAgKTogeyBuYW1lOiBzdHJpbmcgfSB7XG4gICAgY29uc3Qgc3VmZml4ID0gcmVhbG1OYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgYmFzZSA9IHRoaXMuY29uZmlnLnJvbGUgPz8ge307XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHBheWxvYWQubmFtZSA/PyBiYXNlLm5hbWUgPz8gYHBsYV8ke3N1ZmZpeH1fcmVhZGVyYCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZXF1ZXN0KFxuICAgIG1ldGhvZDogXCJHRVRcIiB8IFwiUE9TVFwiIHwgXCJQVVRcIiB8IFwiREVMRVRFXCIsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgcGF5bG9hZDogdW5rbm93bixcbiAgICBhcGlVc2VyOiBLaWJhbmFVc2VyIHwgdW5kZWZpbmVkLFxuICAgIGV4dHJhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHN1Y2Nlc3NDb2RlOiBudW1iZXIsXG4gICAgLi4uYXJnczogQ29udGV4dHVhbEFyZ3M8YW55PlxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIHRoaXMubG9nQ3R4KGFyZ3MsIHRoaXMucmVxdWVzdCk7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnJlcXVlc3Qoe1xuICAgICAgbWV0aG9kLFxuICAgICAgdXJsLFxuICAgICAgZGF0YTpcbiAgICAgICAgcGF5bG9hZCA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICA6IHR5cGVvZiBwYXlsb2FkID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICA/IHBheWxvYWRcbiAgICAgICAgICAgIDogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksXG4gICAgICBhdXRoOiBhcGlVc2VyXG4gICAgICAgID8geyB1c2VybmFtZTogYXBpVXNlci51c2VybmFtZSwgcGFzc3dvcmQ6IGFwaVVzZXIucGFzc3dvcmQgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHZhbGlkYXRlU3RhdHVzOiAoKSA9PiB0cnVlLFxuICAgICAgaHR0cHNBZ2VudDogbmV3IGh0dHBzLkFnZW50KHtcbiAgICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiAoKHRoaXMuY29uZmlnIGFzIGFueSkuaXNQcm9kdWN0aW9uKCkpLFxuICAgICAgfSksXG4gICAgICAuLi5leHRyYSxcbiAgICB9KTtcbiAgfVxufVxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS2liYW5hVXNlclNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMva2liYW5hL3NlcnZpY2VzL0tpYmFuYVVzZXJTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0QsT0FBTyxLQUF3QixNQUFNLE9BQU8sQ0FBQztBQUM3QyxPQUFPLEtBQUssS0FBSyxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQUUseUJBQXlCLEVBQUUscUJBQWtCO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwrQkFBNEI7QUFFeEQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGtCQUd0QztJQUlDLEtBQUssQ0FBQyxVQUFVLENBQ2QsR0FBRyxJQUE2QjtRQUVoQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDbkUsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQXNCLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQ2QsSUFBZ0IsRUFDaEIsU0FB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QkFBaUI7c0RBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYWRSZXF1ZXN0RXJyb3IsXG4gIENvbmZsaWN0RXJyb3IsXG4gIEludGVybmFsRXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgQ29udGV4dHVhbEFyZ3MsIE1heWJlQ29udGV4dHVhbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvY29yZVwiO1xuaW1wb3J0IHsgQ2xpZW50QmFzZWRTZXJ2aWNlLCBzZXJ2aWNlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IEtpYmFuYVNldHVwQ29uZmlnLCBLaWJhbmFVc2VyIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgQXhpb3MsIHsgQXhpb3NJbnN0YW5jZSB9IGZyb20gXCJheGlvc1wiO1xuaW1wb3J0ICogYXMgaHR0cHMgZnJvbSBcIm5vZGU6aHR0cHNcIjtcbmltcG9ydCB7IHJlc29sdmVLaWJhbmFJc1Byb2R1Y3Rpb24gfSBmcm9tIFwiLi9ydW50aW1lXCI7XG5pbXBvcnQgeyBLaWJhbmFBdXRoU2VydmljZSB9IGZyb20gXCIuL0tpYmFuYUF1dGhTZXJ2aWNlXCI7XG5cbmV4cG9ydCBjbGFzcyBLaWJhbmFVc2VyU2VydmljZSBleHRlbmRzIENsaWVudEJhc2VkU2VydmljZTxcbiAgQXhpb3NJbnN0YW5jZSxcbiAgS2liYW5hU2V0dXBDb25maWdcbj4ge1xuICBAc2VydmljZSgpXG4gIHByb3RlY3RlZCBhdXRoU2VydmljZSE6IEtpYmFuYUF1dGhTZXJ2aWNlO1xuXG4gIGFzeW5jIGluaXRpYWxpemUoXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTx7IGNvbmZpZzogS2liYW5hU2V0dXBDb25maWc7IGNsaWVudDogQXhpb3NJbnN0YW5jZSB9PiB7XG4gICAgY29uc3QgeyBjdHhBcmdzIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJpbml0aWFsaXplXCIsIHRydWUpKS5mb3IoXG4gICAgICB0aGlzLmluaXRpYWxpemVcbiAgICApO1xuICAgIGNvbnN0IGNvbmZpZyA9IGN0eEFyZ3NbMF0gYXMgS2liYW5hU2V0dXBDb25maWc7XG4gICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgIGNvbnN0IGNsaWVudCA9IHRoaXMuY3JlYXRlSHR0cENsaWVudChjb25maWcpO1xuICAgIHRoaXMuX2NsaWVudCA9IGNsaWVudDtcbiAgICByZXR1cm4geyBjb25maWcsIGNsaWVudCB9O1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlVXNlcihcbiAgICB1c2VyOiBLaWJhbmFVc2VyLFxuICAgIHJlYWxtTmFtZTogc3RyaW5nLFxuICAgIHJvbGVOYW1lczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjdHhBcmdzIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJjcmVhdGVVc2VyXCIsIHRydWUpKS5mb3IoXG4gICAgICB0aGlzLmNyZWF0ZVVzZXJcbiAgICApO1xuICAgIGNvbnN0IGRlZmF1bHRSb2xlID0gdGhpcy5ub3JtYWxpemVSb2xlQ29uZmlnKHJlYWxtTmFtZSkubmFtZTtcbiAgICBjb25zdCBwYXlsb2FkUm9sZXMgPVxuICAgICAgcm9sZU5hbWVzICYmIHJvbGVOYW1lcy5sZW5ndGggPiAwID8gcm9sZU5hbWVzIDogW2RlZmF1bHRSb2xlXTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcbiAgICAgIFwiUE9TVFwiLFxuICAgICAgYCR7dGhpcy5jb25maWcucHJvdG9jb2x9Oi8vJHt0aGlzLmNvbmZpZy5lc19ob3N0fS9fc2VjdXJpdHkvdXNlci8ke2VuY29kZVVSSUNvbXBvbmVudCh1c2VyLnVzZXJuYW1lKX1gLFxuICAgICAge1xuICAgICAgICBwYXNzd29yZDogdXNlci5wYXNzd29yZCxcbiAgICAgICAgZnVsbF9uYW1lOiB1c2VyLmZ1bGxfbmFtZSxcbiAgICAgICAgZW1haWw6IHVzZXIuZW1haWwsXG4gICAgICAgIGVuYWJsZWQ6IHVzZXIuZW5hYmxlZCA/PyB0cnVlLFxuICAgICAgICBtZXRhZGF0YTogdXNlci5tZXRhZGF0YSA/PyB7fSxcbiAgICAgICAgcm9sZXM6IHVzZXIucm9sZXMgPz8gcGF5bG9hZFJvbGVzLFxuICAgICAgfSxcbiAgICAgIHRoaXMuY29uZmlnLmFkbWluQXBpVXNlcixcbiAgICAgIHsgaGVhZGVyczogeyBcImtibi14c3JmXCI6IFwidHJ1ZVwiLCBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9IH0sXG4gICAgICAyMDAsXG4gICAgICAuLi5jdHhBcmdzXG4gICAgKTtcbiAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID49IDMwMCkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBVbmFibGUgdG8gY3JlYXRlIHVzZXIgJHt1c2VyLnVzZXJuYW1lfTogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWA7XG4gICAgICBjb25zdCBzdGF0dXMgPSByZXNwb25zZS5zdGF0dXMgYXMgbnVtYmVyO1xuICAgICAgaWYgKHN0YXR1cyA9PT0gNDA0IHx8IG1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcIm5vdCBmb3VuZFwiKSkge1xuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0dXMgPT09IDQwOSB8fCBtZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJjb25mbGljdFwiKSkge1xuICAgICAgICB0aHJvdyBuZXcgQ29uZmxpY3RFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0dXMgPT09IDQwMCkge1xuICAgICAgICB0aHJvdyBuZXcgQmFkUmVxdWVzdEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXR1cyA9PT0gNDAxIHx8IHN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlVXNlcihcbiAgICB1c2VyOiBLaWJhbmFVc2VyLFxuICAgIHJlYWxtTmFtZTogc3RyaW5nLFxuICAgIHJvbGVOYW1lczogc3RyaW5nW10gfCB1bmRlZmluZWQsXG4gICAgLi4uYXJnczogTWF5YmVDb250ZXh0dWFsQXJnPGFueT5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjdHhBcmdzIH0gPSAoYXdhaXQgdGhpcy5sb2dDdHgoYXJncywgXCJ1cGRhdGVVc2VyXCIsIHRydWUpKS5mb3IoXG4gICAgICB0aGlzLnVwZGF0ZVVzZXJcbiAgICApO1xuICAgIGNvbnN0IGRlZmF1bHRSb2xlID0gdGhpcy5ub3JtYWxpemVSb2xlQ29uZmlnKHJlYWxtTmFtZSkubmFtZTtcbiAgICBjb25zdCBwYXlsb2FkUm9sZXMgPVxuICAgICAgcm9sZU5hbWVzICYmIHJvbGVOYW1lcy5sZW5ndGggPiAwID8gcm9sZU5hbWVzIDogW2RlZmF1bHRSb2xlXTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdChcbiAgICAgIFwiUFVUXCIsXG4gICAgICBgJHt0aGlzLmNvbmZpZy5wcm90b2NvbH06Ly8ke3RoaXMuY29uZmlnLmVzX2hvc3R9L19zZWN1cml0eS91c2VyLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHVzZXIudXNlcm5hbWUpfWAsXG4gICAgICB7XG4gICAgICAgIHBhc3N3b3JkOiB1c2VyLnBhc3N3b3JkLFxuICAgICAgICBmdWxsX25hbWU6IHVzZXIuZnVsbF9uYW1lLFxuICAgICAgICBlbWFpbDogdXNlci5lbWFpbCxcbiAgICAgICAgZW5hYmxlZDogdXNlci5lbmFibGVkID8/IHRydWUsXG4gICAgICAgIG1ldGFkYXRhOiB1c2VyLm1ldGFkYXRhID8/IHt9LFxuICAgICAgICByb2xlczogdXNlci5yb2xlcyA/PyBwYXlsb2FkUm9sZXMsXG4gICAgICB9LFxuICAgICAgdGhpcy5jb25maWcuYWRtaW5BcGlVc2VyLFxuICAgICAgeyBoZWFkZXJzOiB7IFwia2JuLXhzcmZcIjogXCJ0cnVlXCIsIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0gfSxcbiAgICAgIDIwMCxcbiAgICAgIC4uLmN0eEFyZ3NcbiAgICApO1xuICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPj0gMzAwKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYFVuYWJsZSB0byB1cGRhdGUgdXNlciAke3VzZXIudXNlcm5hbWV9OiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YDtcbiAgICAgIGNvbnN0IHN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1cyBhcyBudW1iZXI7XG4gICAgICBpZiAoc3RhdHVzID09PSA0MDQgfHwgbWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKFwibm90IGZvdW5kXCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXR1cyA9PT0gNDA5IHx8IG1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImNvbmZsaWN0XCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBDb25mbGljdEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICAgIHRocm93IG5ldyBCYWRSZXF1ZXN0RXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdHVzID09PSA0MDEgfHwgc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IobWVzc2FnZSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUh0dHBDbGllbnQoY29uZmlnOiBLaWJhbmFTZXR1cENvbmZpZyk6IEF4aW9zSW5zdGFuY2Uge1xuICAgIHJldHVybiBBeGlvcy5jcmVhdGUoe1xuICAgICAgYmFzZVVSTDogYCR7Y29uZmlnLnByb3RvY29sfTovLyR7Y29uZmlnLmhvc3R9YCxcbiAgICAgIHZhbGlkYXRlU3RhdHVzOiAoKSA9PiB0cnVlLFxuICAgICAgaHR0cHNBZ2VudDogbmV3IGh0dHBzLkFnZW50KHtcbiAgICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiAocmVzb2x2ZUtpYmFuYUlzUHJvZHVjdGlvbih0aGlzLmNvbmZpZyBhcyBhbnkpKSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlRXJyb3IoZXJyb3I6IEVycm9yKTogRXJyb3Ige1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlIHx8IGVycm9yLm5hbWUgfHwgXCJVbmtub3duIGVycm9yXCI7XG4gICAgY29uc3QgbG93ZXJNZXNzYWdlID0gbWVzc2FnZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcIm5vdCBmb3VuZFwiKSB8fCBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCI0MDRcIikpIHtcbiAgICAgIHJldHVybiBuZXcgTm90Rm91bmRFcnJvcihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJhbHJlYWR5IGV4aXN0c1wiKSB8fFxuICAgICAgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiY29uZmxpY3RcIikgfHxcbiAgICAgIGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcIjQwOVwiKVxuICAgICkge1xuICAgICAgcmV0dXJuIG5ldyBDb25mbGljdEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcImludmFsaWRcIikgfHxcbiAgICAgIGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcImJhZCByZXF1ZXN0XCIpIHx8XG4gICAgICBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCI0MDBcIilcbiAgICApIHtcbiAgICAgIHJldHVybiBuZXcgQmFkUmVxdWVzdEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIGlmIChsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCJ1bmF1dGhvcml6ZWRcIikgfHwgbG93ZXJNZXNzYWdlLmluY2x1ZGVzKFwiNDAxXCIpKSB7XG4gICAgICByZXR1cm4gbmV3IE5vdEZvdW5kRXJyb3IobWVzc2FnZSk7XG4gICAgfVxuXG4gICAgaWYgKGxvd2VyTWVzc2FnZS5pbmNsdWRlcyhcImZvcmJpZGRlblwiKSB8fCBsb3dlck1lc3NhZ2UuaW5jbHVkZXMoXCI0MDNcIikpIHtcbiAgICAgIHJldHVybiBuZXcgTm90Rm91bmRFcnJvcihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEludGVybmFsRXJyb3IobWVzc2FnZSk7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVJvbGVDb25maWcoXG4gICAgcmVhbG1OYW1lOiBzdHJpbmcsXG4gICAgcGF5bG9hZDogUGFydGlhbDx7IG5hbWU/OiBzdHJpbmcgfT4gPSB7fVxuICApOiB7IG5hbWU6IHN0cmluZyB9IHtcbiAgICBjb25zdCBzdWZmaXggPSByZWFsbU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBiYXNlID0gdGhpcy5jb25maWcucm9sZSA/PyB7fTtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogcGF5bG9hZC5uYW1lID8/IGJhc2UubmFtZSA/PyBgcGxhXyR7c3VmZml4fV9yZWFkZXJgLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBcIkdFVFwiIHwgXCJQT1NUXCIgfCBcIlBVVFwiIHwgXCJERUxFVEVcIixcbiAgICB1cmw6IHN0cmluZyxcbiAgICBwYXlsb2FkOiB1bmtub3duLFxuICAgIGFwaVVzZXI6IEtpYmFuYVVzZXIgfCB1bmRlZmluZWQsXG4gICAgZXh0cmE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgc3VjY2Vzc0NvZGU6IG51bWJlcixcbiAgICAuLi5hcmdzOiBDb250ZXh0dWFsQXJnczxhbnk+XG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgdGhpcy5sb2dDdHgoYXJncywgdGhpcy5yZXF1ZXN0KTtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQucmVxdWVzdCh7XG4gICAgICBtZXRob2QsXG4gICAgICB1cmwsXG4gICAgICBkYXRhOlxuICAgICAgICBwYXlsb2FkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgIDogdHlwZW9mIHBheWxvYWQgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gcGF5bG9hZFxuICAgICAgICAgICAgOiBKU09OLnN0cmluZ2lmeShwYXlsb2FkKSxcbiAgICAgIGF1dGg6IGFwaVVzZXJcbiAgICAgICAgPyB7IHVzZXJuYW1lOiBhcGlVc2VyLnVzZXJuYW1lLCBwYXNzd29yZDogYXBpVXNlci5wYXNzd29yZCB9XG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgdmFsaWRhdGVTdGF0dXM6ICgpID0+IHRydWUsXG4gICAgICBodHRwc0FnZW50OiBuZXcgaHR0cHMuQWdlbnQoe1xuICAgICAgICByZWplY3RVbmF1dGhvcml6ZWQ6IChyZXNvbHZlS2liYW5hSXNQcm9kdWN0aW9uKHRoaXMuY29uZmlnIGFzIGFueSkpLFxuICAgICAgfSksXG4gICAgICAuLi5leHRyYSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,15 @@
1
+ import { InternalError } from "@decaf-ts/db-decorators";
2
+ let kibanaProductionResolver;
3
+ export function setKibanaProductionResolver(resolver) {
4
+ kibanaProductionResolver = resolver;
5
+ }
6
+ export function resolveKibanaIsProduction(config) {
7
+ if (typeof config?.isProduction === "function") {
8
+ return config.isProduction();
9
+ }
10
+ if (kibanaProductionResolver) {
11
+ return kibanaProductionResolver();
12
+ }
13
+ throw new InternalError("Kibana production resolver not initialized");
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9raWJhbmEvc2VydmljZXMvcnVudGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJeEQsSUFBSSx3QkFBd0QsQ0FBQztBQUU3RCxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLFFBQTRCO0lBRTVCLHdCQUF3QixHQUFHLFFBQVEsQ0FBQztBQUN0QyxDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUN2QyxNQUF5QztJQUV6QyxJQUFJLE9BQU8sTUFBTSxFQUFFLFlBQVksS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUMvQyxPQUFPLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1FBQzdCLE9BQU8sd0JBQXdCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsTUFBTSxJQUFJLGFBQWEsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO0FBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5cbnR5cGUgUHJvZHVjdGlvblJlc29sdmVyID0gKCkgPT4gYm9vbGVhbjtcblxubGV0IGtpYmFuYVByb2R1Y3Rpb25SZXNvbHZlcjogUHJvZHVjdGlvblJlc29sdmVyIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0S2liYW5hUHJvZHVjdGlvblJlc29sdmVyKFxuICByZXNvbHZlcjogUHJvZHVjdGlvblJlc29sdmVyXG4pOiB2b2lkIHtcbiAga2liYW5hUHJvZHVjdGlvblJlc29sdmVyID0gcmVzb2x2ZXI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlS2liYW5hSXNQcm9kdWN0aW9uKFxuICBjb25maWc/OiB7IGlzUHJvZHVjdGlvbj86ICgpID0+IGJvb2xlYW4gfVxuKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgY29uZmlnPy5pc1Byb2R1Y3Rpb24gPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiBjb25maWcuaXNQcm9kdWN0aW9uKCk7XG4gIH1cbiAgaWYgKGtpYmFuYVByb2R1Y3Rpb25SZXNvbHZlcikge1xuICAgIHJldHVybiBraWJhbmFQcm9kdWN0aW9uUmVzb2x2ZXIoKTtcbiAgfVxuICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIktpYmFuYSBwcm9kdWN0aW9uIHJlc29sdmVyIG5vdCBpbml0aWFsaXplZFwiKTtcbn1cbiJdfQ==
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @module integrations/graph/execution/CodeSandboxEvaluator
3
+ * @summary Pluggable contract for evaluating code-based conditions (DECAF-32 §22.4).
4
+ * @description The engine does NOT implement the VM sandbox directly (§22.4).
5
+ * Downstream projects (e.g. ALFRED) register a `CodeSandboxEvaluator` via the
6
+ * `GraphExecutionEngineConfig.codeSandboxEvaluator` field. When absent, code
7
+ * conditions throw a `GRAPH_CODE_SANDBOX_NOT_CONFIGURED` error.
8
+ *
9
+ * The sandbox must follow the same restrictions as the Code Node (§22.4):
10
+ * - No system API access (`require`, `process`, `fs`, `child_process`, etc.)
11
+ * - Placeholder syntax for workflow data references (`{{ $input.foo }}`,
12
+ * `{{ $node["Name"].output }}`, `{{ $vars.bar }}`, etc.)
13
+ * - Static code validation (e.g. `acorn`-based) before execution
14
+ * - The code must return a boolean value (for conditions) or any value
15
+ * (for Code Node transforms)
16
+ */
17
+ /**
18
+ * Context passed to the code sandbox evaluator.
19
+ */
20
+ export interface CodeSandboxContext {
21
+ /** The raw code string authored by the user. */
22
+ code: string;
23
+ /** The programming language (defaults to `"javascript"`). */
24
+ language?: "javascript" | "typescript";
25
+ /** The current input values, accessible as `$input` in placeholders. */
26
+ input: Record<string, unknown>;
27
+ /** Workflow variables, accessible as `$vars` in placeholders. */
28
+ vars?: Record<string, unknown>;
29
+ /** Current loop item (if inside a foreach), accessible as `$item`. */
30
+ item?: unknown;
31
+ /** Current loop index (if inside a foreach), accessible as `$index`. */
32
+ index?: number;
33
+ /** Outputs of upstream nodes, accessible as `$node["Name"].output`. */
34
+ nodes?: Record<string, Record<string, unknown>>;
35
+ }
36
+ /**
37
+ * Pluggable evaluator for code-based conditions and Code Node transforms.
38
+ *
39
+ * Implementations MUST enforce the Code Node restrictions (§22.4):
40
+ * no system API access, static validation, placeholder resolution.
41
+ */
42
+ export interface CodeSandboxEvaluator {
43
+ /**
44
+ * Evaluates the given code in a restricted sandbox and returns the result.
45
+ *
46
+ * For conditions, the code is expected to return a boolean.
47
+ * For Code Node transforms, the code may return any value.
48
+ *
49
+ * @param ctx - The sandbox context containing code, input, and references.
50
+ * @returns The result of evaluating the code.
51
+ */
52
+ evaluate(ctx: CodeSandboxContext): Promise<unknown> | unknown;
53
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @module integrations/graph/execution/CodeSandboxEvaluator
3
+ * @summary Pluggable contract for evaluating code-based conditions (DECAF-32 §22.4).
4
+ * @description The engine does NOT implement the VM sandbox directly (§22.4).
5
+ * Downstream projects (e.g. ALFRED) register a `CodeSandboxEvaluator` via the
6
+ * `GraphExecutionEngineConfig.codeSandboxEvaluator` field. When absent, code
7
+ * conditions throw a `GRAPH_CODE_SANDBOX_NOT_CONFIGURED` error.
8
+ *
9
+ * The sandbox must follow the same restrictions as the Code Node (§22.4):
10
+ * - No system API access (`require`, `process`, `fs`, `child_process`, etc.)
11
+ * - Placeholder syntax for workflow data references (`{{ $input.foo }}`,
12
+ * `{{ $node["Name"].output }}`, `{{ $vars.bar }}`, etc.)
13
+ * - Static code validation (e.g. `acorn`-based) before execution
14
+ * - The code must return a boolean value (for conditions) or any value
15
+ * (for Code Node transforms)
16
+ */
17
+ /**
18
+ * Context passed to the code sandbox evaluator.
19
+ */
20
+ export interface CodeSandboxContext {
21
+ /** The raw code string authored by the user. */
22
+ code: string;
23
+ /** The programming language (defaults to `"javascript"`). */
24
+ language?: "javascript" | "typescript";
25
+ /** The current input values, accessible as `$input` in placeholders. */
26
+ input: Record<string, unknown>;
27
+ /** Workflow variables, accessible as `$vars` in placeholders. */
28
+ vars?: Record<string, unknown>;
29
+ /** Current loop item (if inside a foreach), accessible as `$item`. */
30
+ item?: unknown;
31
+ /** Current loop index (if inside a foreach), accessible as `$index`. */
32
+ index?: number;
33
+ /** Outputs of upstream nodes, accessible as `$node["Name"].output`. */
34
+ nodes?: Record<string, Record<string, unknown>>;
35
+ }
36
+ /**
37
+ * Pluggable evaluator for code-based conditions and Code Node transforms.
38
+ *
39
+ * Implementations MUST enforce the Code Node restrictions (§22.4):
40
+ * no system API access, static validation, placeholder resolution.
41
+ */
42
+ export interface CodeSandboxEvaluator {
43
+ /**
44
+ * Evaluates the given code in a restricted sandbox and returns the result.
45
+ *
46
+ * For conditions, the code is expected to return a boolean.
47
+ * For Code Node transforms, the code may return any value.
48
+ *
49
+ * @param ctx - The sandbox context containing code, input, and references.
50
+ * @returns The result of evaluating the code.
51
+ */
52
+ evaluate(ctx: CodeSandboxContext): Promise<unknown> | unknown;
53
+ }
@@ -11,6 +11,7 @@ import { GraphExecutionEventEmitter } from "../events/GraphExecutionEventEmitter
11
11
  import type { GraphNodeExecutorRegistry } from "../registry/GraphNodeExecutorRegistry.d.cts";
12
12
  import { GraphExecutionPlanner } from "../planning/GraphExecutionPlanner.d.cts";
13
13
  import type { GraphValueStoreAdapter } from "../store/GraphValueStoreAdapter.d.cts";
14
+ import type { CodeSandboxEvaluator } from "./CodeSandboxEvaluator.d.cts";
14
15
  /**
15
16
  * Configuration for the {@link GraphExecutionEngine}.
16
17
  */
@@ -20,6 +21,13 @@ export interface GraphExecutionEngineConfig {
20
21
  valueStoreAdapter?: GraphValueStoreAdapter;
21
22
  eventEmitter?: GraphExecutionEventEmitter;
22
23
  defaultOptions?: Partial<GraphExecutionOptions>;
24
+ /**
25
+ * Optional pluggable code sandbox evaluator for code-based conditions
26
+ * (DECAF-32 §22.4). When absent, code conditions throw
27
+ * `GRAPH_CODE_SANDBOX_NOT_CONFIGURED`. Downstream projects (e.g. ALFRED)
28
+ * supply the actual VM sandbox implementation.
29
+ */
30
+ codeSandboxEvaluator?: CodeSandboxEvaluator;
23
31
  /**
24
32
  * Optional callback invoked at the end of engine construction with the
25
33
  * fully-initialised engine instance. Use this to register executors that
@@ -44,6 +52,8 @@ export declare class GraphExecutionEngine implements Observable<[GraphExecutionO
44
52
  private readonly planner;
45
53
  private readonly valueStoreAdapter;
46
54
  private readonly defaultOptions;
55
+ /** Pluggable code sandbox evaluator (§22.4); may be undefined. */
56
+ readonly codeSandboxEvaluator?: CodeSandboxEvaluator;
47
57
  constructor(config: GraphExecutionEngineConfig);
48
58
  private readonly config;
49
59
  observe(observer: GraphExecutionObserver): () => void;
@@ -11,6 +11,7 @@ import { GraphExecutionEventEmitter } from "../events/GraphExecutionEventEmitter
11
11
  import type { GraphNodeExecutorRegistry } from "../registry/GraphNodeExecutorRegistry.d.mts";
12
12
  import { GraphExecutionPlanner } from "../planning/GraphExecutionPlanner.d.mts";
13
13
  import type { GraphValueStoreAdapter } from "../store/GraphValueStoreAdapter.d.mts";
14
+ import type { CodeSandboxEvaluator } from "./CodeSandboxEvaluator.d.mts";
14
15
  /**
15
16
  * Configuration for the {@link GraphExecutionEngine}.
16
17
  */
@@ -20,6 +21,13 @@ export interface GraphExecutionEngineConfig {
20
21
  valueStoreAdapter?: GraphValueStoreAdapter;
21
22
  eventEmitter?: GraphExecutionEventEmitter;
22
23
  defaultOptions?: Partial<GraphExecutionOptions>;
24
+ /**
25
+ * Optional pluggable code sandbox evaluator for code-based conditions
26
+ * (DECAF-32 §22.4). When absent, code conditions throw
27
+ * `GRAPH_CODE_SANDBOX_NOT_CONFIGURED`. Downstream projects (e.g. ALFRED)
28
+ * supply the actual VM sandbox implementation.
29
+ */
30
+ codeSandboxEvaluator?: CodeSandboxEvaluator;
23
31
  /**
24
32
  * Optional callback invoked at the end of engine construction with the
25
33
  * fully-initialised engine instance. Use this to register executors that
@@ -44,6 +52,8 @@ export declare class GraphExecutionEngine implements Observable<[GraphExecutionO
44
52
  private readonly planner;
45
53
  private readonly valueStoreAdapter;
46
54
  private readonly defaultOptions;
55
+ /** Pluggable code sandbox evaluator (§22.4); may be undefined. */
56
+ readonly codeSandboxEvaluator?: CodeSandboxEvaluator;
47
57
  constructor(config: GraphExecutionEngineConfig);
48
58
  private readonly config;
49
59
  observe(observer: GraphExecutionObserver): () => void;
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @module integrations/graph/execution/SwitchGraphNodeExecutor
3
+ * @summary Executor for the Switch flow-control node (DECAF-32 §22.2.2).
4
+ * @description Evaluates each case's condition against the node's input and
5
+ * routes the input to the first matching case's output port. Falls back to
6
+ * the `default` output when no case matches. Supports both
7
+ * {@link ConditionExpression} (graphical mode) and {@link CodeCondition}
8
+ * (code mode via the pluggable {@link CodeSandboxEvaluator}).
9
+ */
10
+ import type { GraphNodeExecutor } from "./GraphNodeExecutor.d.cts";
11
+ import type { GraphExecutionContext } from "./GraphExecutionContext.d.cts";
12
+ import type { GraphExecutionValues } from "../types.d.cts";
13
+ import type { CodeSandboxEvaluator } from "./CodeSandboxEvaluator.d.cts";
14
+ /**
15
+ * Executor for `core.flow.switch` nodes.
16
+ *
17
+ * Evaluates each case's condition in order and routes the input to the
18
+ * first matching case's output port. When no case matches, routes to the
19
+ * `default` output port.
20
+ *
21
+ * Condition evaluation:
22
+ * - `ConditionExpression` — evaluated via {@link ConditionExpressionEvaluator}.
23
+ * - `CodeCondition` — evaluated via the pluggable {@link CodeSandboxEvaluator}
24
+ * from the engine's config. Throws `GRAPH_CODE_SANDBOX_NOT_CONFIGURED`
25
+ * when no evaluator is registered.
26
+ */
27
+ export declare class SwitchGraphNodeExecutor implements GraphNodeExecutor {
28
+ private readonly engine?;
29
+ private readonly expressionEvaluator;
30
+ constructor(engine?: {
31
+ codeSandboxEvaluator?: CodeSandboxEvaluator;
32
+ } | undefined);
33
+ execute(input: GraphExecutionValues, context: GraphExecutionContext): Promise<GraphExecutionValues>;
34
+ /**
35
+ * Evaluates a single switch case condition.
36
+ */
37
+ private evaluateCondition;
38
+ /**
39
+ * Evaluates a code condition via the pluggable sandbox evaluator.
40
+ */
41
+ private evaluateCodeCondition;
42
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @module integrations/graph/execution/SwitchGraphNodeExecutor
3
+ * @summary Executor for the Switch flow-control node (DECAF-32 §22.2.2).
4
+ * @description Evaluates each case's condition against the node's input and
5
+ * routes the input to the first matching case's output port. Falls back to
6
+ * the `default` output when no case matches. Supports both
7
+ * {@link ConditionExpression} (graphical mode) and {@link CodeCondition}
8
+ * (code mode via the pluggable {@link CodeSandboxEvaluator}).
9
+ */
10
+ import type { GraphNodeExecutor } from "./GraphNodeExecutor.d.mts";
11
+ import type { GraphExecutionContext } from "./GraphExecutionContext.d.mts";
12
+ import type { GraphExecutionValues } from "../types.d.mts";
13
+ import type { CodeSandboxEvaluator } from "./CodeSandboxEvaluator.d.mts";
14
+ /**
15
+ * Executor for `core.flow.switch` nodes.
16
+ *
17
+ * Evaluates each case's condition in order and routes the input to the
18
+ * first matching case's output port. When no case matches, routes to the
19
+ * `default` output port.
20
+ *
21
+ * Condition evaluation:
22
+ * - `ConditionExpression` — evaluated via {@link ConditionExpressionEvaluator}.
23
+ * - `CodeCondition` — evaluated via the pluggable {@link CodeSandboxEvaluator}
24
+ * from the engine's config. Throws `GRAPH_CODE_SANDBOX_NOT_CONFIGURED`
25
+ * when no evaluator is registered.
26
+ */
27
+ export declare class SwitchGraphNodeExecutor implements GraphNodeExecutor {
28
+ private readonly engine?;
29
+ private readonly expressionEvaluator;
30
+ constructor(engine?: {
31
+ codeSandboxEvaluator?: CodeSandboxEvaluator;
32
+ } | undefined);
33
+ execute(input: GraphExecutionValues, context: GraphExecutionContext): Promise<GraphExecutionValues>;
34
+ /**
35
+ * Evaluates a single switch case condition.
36
+ */
37
+ private evaluateCondition;
38
+ /**
39
+ * Evaluates a code condition via the pluggable sandbox evaluator.
40
+ */
41
+ private evaluateCodeCondition;
42
+ }
@@ -8,3 +8,5 @@ export * from "./GraphNodeExecutor.d.cts";
8
8
  export * from "./GraphExecutionResult.d.cts";
9
9
  export * from "./GraphExecutionFrame.d.cts";
10
10
  export * from "./GraphExecutionEngine.d.cts";
11
+ export * from "./CodeSandboxEvaluator.d.cts";
12
+ export * from "./SwitchGraphNodeExecutor.d.cts";
@@ -8,3 +8,5 @@ export * from "./GraphNodeExecutor.d.mts";
8
8
  export * from "./GraphExecutionResult.d.mts";
9
9
  export * from "./GraphExecutionFrame.d.mts";
10
10
  export * from "./GraphExecutionEngine.d.mts";
11
+ export * from "./CodeSandboxEvaluator.d.mts";
12
+ export * from "./SwitchGraphNodeExecutor.d.mts";
@@ -23,6 +23,8 @@ export * from "./execution/GraphNodeExecutor.d.cts";
23
23
  export * from "./execution/GraphExecutionFrame.d.cts";
24
24
  export * from "./execution/GraphExecutionResult.d.cts";
25
25
  export * from "./execution/GraphExecutionEngine.d.cts";
26
+ export * from "./execution/CodeSandboxEvaluator.d.cts";
27
+ export * from "./execution/SwitchGraphNodeExecutor.d.cts";
26
28
  export * from "./registry/GraphNodeExecutorRegistry.d.cts";
27
29
  export * from "./registry/GraphNodeExecutorResolver.d.cts";
28
30
  export * from "./store/GraphValueKey.d.cts";
@@ -41,6 +43,7 @@ export * from "./validation/GraphDefinitionValidator.d.cts";
41
43
  export * from "./validation/GraphPortSchemaResolver.d.cts";
42
44
  export * from "./validation/GraphValueValidator.d.cts";
43
45
  export * from "./loops/GraphConditionEvaluator.d.cts";
46
+ export * from "./loops/ConditionExpressionEvaluator.d.cts";
44
47
  export * from "./loops/GraphLoopExecutionContext.d.cts";
45
48
  export * from "./loops/ForeachGraphNodeExecutor.d.cts";
46
49
  export * from "./loops/WhileGraphNodeExecutor.d.cts";
@@ -50,3 +53,4 @@ export * from "./pinning/GraphPinningPolicy.d.cts";
50
53
  export * from "./pinning/GraphPinningDependencyResolver.d.cts";
51
54
  export * from "./pinning/GraphPinningService.d.cts";
52
55
  export * from "./snapshots/GraphExecutionSnapshotMapper.d.cts";
56
+ export * from "./nodes/index.d.cts";
@@ -23,6 +23,8 @@ export * from "./execution/GraphNodeExecutor.d.mts";
23
23
  export * from "./execution/GraphExecutionFrame.d.mts";
24
24
  export * from "./execution/GraphExecutionResult.d.mts";
25
25
  export * from "./execution/GraphExecutionEngine.d.mts";
26
+ export * from "./execution/CodeSandboxEvaluator.d.mts";
27
+ export * from "./execution/SwitchGraphNodeExecutor.d.mts";
26
28
  export * from "./registry/GraphNodeExecutorRegistry.d.mts";
27
29
  export * from "./registry/GraphNodeExecutorResolver.d.mts";
28
30
  export * from "./store/GraphValueKey.d.mts";
@@ -41,6 +43,7 @@ export * from "./validation/GraphDefinitionValidator.d.mts";
41
43
  export * from "./validation/GraphPortSchemaResolver.d.mts";
42
44
  export * from "./validation/GraphValueValidator.d.mts";
43
45
  export * from "./loops/GraphConditionEvaluator.d.mts";
46
+ export * from "./loops/ConditionExpressionEvaluator.d.mts";
44
47
  export * from "./loops/GraphLoopExecutionContext.d.mts";
45
48
  export * from "./loops/ForeachGraphNodeExecutor.d.mts";
46
49
  export * from "./loops/WhileGraphNodeExecutor.d.mts";
@@ -50,3 +53,4 @@ export * from "./pinning/GraphPinningPolicy.d.mts";
50
53
  export * from "./pinning/GraphPinningDependencyResolver.d.mts";
51
54
  export * from "./pinning/GraphPinningService.d.mts";
52
55
  export * from "./snapshots/GraphExecutionSnapshotMapper.d.mts";
56
+ export * from "./nodes/index.d.mts";
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @module integrations/graph/loops/ConditionExpressionEvaluator
3
+ * @summary Evaluator for the ALFRED-5 `ConditionExpression` DSL (DECAF-32 §22.3).
4
+ * @description Evaluates declarative, serializable condition expressions with
5
+ * `eq`/`neq`/`gt`/`gte`/`lt`/`lte`/`and`/`or`/`not`/`exists` operators and
6
+ * `ExprValue` references (`{const}`, `{path}`, `{step, path}`).
7
+ */
8
+ import type { ConditionExpression } from "../types.d.cts";
9
+ /**
10
+ * Evaluates a {@link ConditionExpression} against the given state.
11
+ *
12
+ * `ExprValue` resolution:
13
+ * - `{ const: x }` → the literal value `x`.
14
+ * - `{ path: "a.b" }` → dotted-path lookup into `state`.
15
+ * - `{ step: "nodeId", path: "out" }` → cross-node reference; in v1 the state
16
+ * is expected to contain a `nodes` map keyed by node id (reserved for future
17
+ * multi-step evaluation; falls back to `state` lookup when absent).
18
+ */
19
+ export declare class ConditionExpressionEvaluator {
20
+ /**
21
+ * Evaluates a condition expression to a boolean.
22
+ *
23
+ * @param expr - The condition expression.
24
+ * @param state - The current evaluation state (loop state or execution values).
25
+ * @returns `true` when the expression evaluates to a truthy/positive result.
26
+ */
27
+ evaluate(expr: ConditionExpression, state: unknown): boolean;
28
+ /**
29
+ * Resolves an {@link ExprValue} against the current state.
30
+ */
31
+ private resolveValue;
32
+ /**
33
+ * Resolves a dotted path into a target object.
34
+ */
35
+ private resolvePath;
36
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @module integrations/graph/loops/ConditionExpressionEvaluator
3
+ * @summary Evaluator for the ALFRED-5 `ConditionExpression` DSL (DECAF-32 §22.3).
4
+ * @description Evaluates declarative, serializable condition expressions with
5
+ * `eq`/`neq`/`gt`/`gte`/`lt`/`lte`/`and`/`or`/`not`/`exists` operators and
6
+ * `ExprValue` references (`{const}`, `{path}`, `{step, path}`).
7
+ */
8
+ import type { ConditionExpression } from "../types.d.mts";
9
+ /**
10
+ * Evaluates a {@link ConditionExpression} against the given state.
11
+ *
12
+ * `ExprValue` resolution:
13
+ * - `{ const: x }` → the literal value `x`.
14
+ * - `{ path: "a.b" }` → dotted-path lookup into `state`.
15
+ * - `{ step: "nodeId", path: "out" }` → cross-node reference; in v1 the state
16
+ * is expected to contain a `nodes` map keyed by node id (reserved for future
17
+ * multi-step evaluation; falls back to `state` lookup when absent).
18
+ */
19
+ export declare class ConditionExpressionEvaluator {
20
+ /**
21
+ * Evaluates a condition expression to a boolean.
22
+ *
23
+ * @param expr - The condition expression.
24
+ * @param state - The current evaluation state (loop state or execution values).
25
+ * @returns `true` when the expression evaluates to a truthy/positive result.
26
+ */
27
+ evaluate(expr: ConditionExpression, state: unknown): boolean;
28
+ /**
29
+ * Resolves an {@link ExprValue} against the current state.
30
+ */
31
+ private resolveValue;
32
+ /**
33
+ * Resolves a dotted path into a target object.
34
+ */
35
+ private resolvePath;
36
+ }
@@ -1,23 +1,39 @@
1
1
  /**
2
2
  * @module integrations/graph/loops/GraphConditionEvaluator
3
- * @summary Evaluator for built-in loop condition types.
3
+ * @summary Evaluator for built-in loop condition types and the `ConditionExpression` DSL.
4
4
  * @description Supports safe, built-in condition types only. Does NOT evaluate arbitrary JavaScript expressions.
5
+ * When the condition object carries an `op` field (ALFRED-5 §8 / DECAF-32 §22.3), dispatches to the
6
+ * {@link ConditionExpressionEvaluator} instead of the built-in `type`-based switch.
5
7
  */
6
- import type { GraphConditionDefinition } from "../types.d.cts";
8
+ import type { ConditionExpression, GraphConditionDefinition } from "../types.d.cts";
7
9
  /**
8
- * Evaluates loop conditions using built-in comparison types.
10
+ * Evaluates loop conditions using built-in comparison types or the
11
+ * `ConditionExpression` DSL.
9
12
  */
10
13
  export declare class GraphConditionEvaluator {
14
+ private readonly expressionEvaluator;
11
15
  /**
12
16
  * Evaluates a condition against the given state.
13
17
  *
18
+ * When the condition object carries an `op` field, it is treated as a
19
+ * `ConditionExpression` (§22.3) and dispatched to the
20
+ * {@link ConditionExpressionEvaluator}. Otherwise the built-in `type`-based
21
+ * switch is used.
22
+ *
14
23
  * @param condition - The condition definition.
15
24
  * @param state - The current loop state.
16
25
  * @returns `true` when the condition passes.
17
26
  */
18
- evaluate(condition: GraphConditionDefinition, state: unknown): boolean;
27
+ evaluate(condition: GraphConditionDefinition | ConditionExpression, state: unknown): boolean;
19
28
  /**
20
29
  * Resolves a value that may be a dotted path into the state object.
21
30
  */
22
31
  private resolveValue;
32
+ /**
33
+ * Detects whether a condition object is a `ConditionExpression` (§22.3) by
34
+ * checking for the presence of an `op` field. When true, the object is
35
+ * treated as a `ConditionExpression` and dispatched to the
36
+ * {@link ConditionExpressionEvaluator}.
37
+ */
38
+ private isConditionExpression;
23
39
  }
@@ -1,23 +1,39 @@
1
1
  /**
2
2
  * @module integrations/graph/loops/GraphConditionEvaluator
3
- * @summary Evaluator for built-in loop condition types.
3
+ * @summary Evaluator for built-in loop condition types and the `ConditionExpression` DSL.
4
4
  * @description Supports safe, built-in condition types only. Does NOT evaluate arbitrary JavaScript expressions.
5
+ * When the condition object carries an `op` field (ALFRED-5 §8 / DECAF-32 §22.3), dispatches to the
6
+ * {@link ConditionExpressionEvaluator} instead of the built-in `type`-based switch.
5
7
  */
6
- import type { GraphConditionDefinition } from "../types.d.mts";
8
+ import type { ConditionExpression, GraphConditionDefinition } from "../types.d.mts";
7
9
  /**
8
- * Evaluates loop conditions using built-in comparison types.
10
+ * Evaluates loop conditions using built-in comparison types or the
11
+ * `ConditionExpression` DSL.
9
12
  */
10
13
  export declare class GraphConditionEvaluator {
14
+ private readonly expressionEvaluator;
11
15
  /**
12
16
  * Evaluates a condition against the given state.
13
17
  *
18
+ * When the condition object carries an `op` field, it is treated as a
19
+ * `ConditionExpression` (§22.3) and dispatched to the
20
+ * {@link ConditionExpressionEvaluator}. Otherwise the built-in `type`-based
21
+ * switch is used.
22
+ *
14
23
  * @param condition - The condition definition.
15
24
  * @param state - The current loop state.
16
25
  * @returns `true` when the condition passes.
17
26
  */
18
- evaluate(condition: GraphConditionDefinition, state: unknown): boolean;
27
+ evaluate(condition: GraphConditionDefinition | ConditionExpression, state: unknown): boolean;
19
28
  /**
20
29
  * Resolves a value that may be a dotted path into the state object.
21
30
  */
22
31
  private resolveValue;
32
+ /**
33
+ * Detects whether a condition object is a `ConditionExpression` (§22.3) by
34
+ * checking for the presence of an `op` field. When true, the object is
35
+ * treated as a `ConditionExpression` and dispatched to the
36
+ * {@link ConditionExpressionEvaluator}.
37
+ */
38
+ private isConditionExpression;
23
39
  }
@@ -4,6 +4,7 @@
4
4
  * @description Re-exports the condition evaluator, loop execution context, and foreach/while/until executors.
5
5
  */
6
6
  export * from "./GraphConditionEvaluator.d.cts";
7
+ export * from "./ConditionExpressionEvaluator.d.cts";
7
8
  export * from "./GraphLoopExecutionContext.d.cts";
8
9
  export * from "./ForeachGraphNodeExecutor.d.cts";
9
10
  export * from "./WhileGraphNodeExecutor.d.cts";
@@ -4,6 +4,7 @@
4
4
  * @description Re-exports the condition evaluator, loop execution context, and foreach/while/until executors.
5
5
  */
6
6
  export * from "./GraphConditionEvaluator.d.mts";
7
+ export * from "./ConditionExpressionEvaluator.d.mts";
7
8
  export * from "./GraphLoopExecutionContext.d.mts";
8
9
  export * from "./ForeachGraphNodeExecutor.d.mts";
9
10
  export * from "./WhileGraphNodeExecutor.d.mts";