@xyne/workflow-sdk 3.2.37 → 3.2.39

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 (253) hide show
  1. package/dist/agents/agent-step.d.ts +2 -2
  2. package/dist/agents/host-agent-step.d.ts +1 -1
  3. package/dist/builder/index.d.ts +2 -2
  4. package/dist/builder/index.d.ts.map +1 -1
  5. package/dist/builder/index.js +1 -1
  6. package/dist/builder/index.js.map +1 -1
  7. package/dist/client/types.d.ts +7 -5
  8. package/dist/client/types.d.ts.map +1 -1
  9. package/dist/client/workflow-client.d.ts.map +1 -1
  10. package/dist/client/workflow-client.js +7 -0
  11. package/dist/client/workflow-client.js.map +1 -1
  12. package/dist/common/citation-ref.d.ts +4 -4
  13. package/dist/common/credentials.d.ts +107 -0
  14. package/dist/common/credentials.d.ts.map +1 -1
  15. package/dist/common/credentials.js +67 -0
  16. package/dist/common/credentials.js.map +1 -1
  17. package/dist/common/index.d.ts +2 -2
  18. package/dist/common/index.d.ts.map +1 -1
  19. package/dist/common/index.js +2 -2
  20. package/dist/common/index.js.map +1 -1
  21. package/dist/connectors/builtin/builtin-connector.d.ts +33 -0
  22. package/dist/connectors/builtin/builtin-connector.d.ts.map +1 -0
  23. package/dist/connectors/builtin/builtin-connector.js +63 -0
  24. package/dist/connectors/builtin/builtin-connector.js.map +1 -0
  25. package/dist/connectors/builtin/credentials.d.ts +18 -0
  26. package/dist/connectors/builtin/credentials.d.ts.map +1 -0
  27. package/dist/connectors/builtin/credentials.js +50 -0
  28. package/dist/connectors/builtin/credentials.js.map +1 -0
  29. package/dist/{steps/builtin → connectors/builtin/steps}/code.step.d.ts +4 -4
  30. package/dist/connectors/builtin/steps/code.step.d.ts.map +1 -0
  31. package/dist/{steps/builtin → connectors/builtin/steps}/code.step.js +3 -3
  32. package/dist/connectors/builtin/steps/code.step.js.map +1 -0
  33. package/dist/{steps/builtin → connectors/builtin/steps}/conditional.step.d.ts +10 -10
  34. package/dist/connectors/builtin/steps/conditional.step.d.ts.map +1 -0
  35. package/dist/{steps/builtin → connectors/builtin/steps}/conditional.step.js +4 -4
  36. package/dist/connectors/builtin/steps/conditional.step.js.map +1 -0
  37. package/dist/{steps/builtin → connectors/builtin/steps}/dedup.step.d.ts +4 -4
  38. package/dist/connectors/builtin/steps/dedup.step.d.ts.map +1 -0
  39. package/dist/{steps/builtin → connectors/builtin/steps}/dedup.step.js +3 -3
  40. package/dist/connectors/builtin/steps/dedup.step.js.map +1 -0
  41. package/dist/{steps/builtin → connectors/builtin/steps}/http-request.step.d.ts +29 -22
  42. package/dist/connectors/builtin/steps/http-request.step.d.ts.map +1 -0
  43. package/dist/{steps/builtin → connectors/builtin/steps}/http-request.step.js +15 -9
  44. package/dist/connectors/builtin/steps/http-request.step.js.map +1 -0
  45. package/dist/{steps/builtin → connectors/builtin/steps}/loop.step.d.ts +4 -4
  46. package/dist/connectors/builtin/steps/loop.step.d.ts.map +1 -0
  47. package/dist/{steps/builtin → connectors/builtin/steps}/loop.step.js +3 -3
  48. package/dist/connectors/builtin/steps/loop.step.js.map +1 -0
  49. package/dist/{steps/builtin → connectors/builtin/steps}/map.step.d.ts +4 -4
  50. package/dist/connectors/builtin/steps/map.step.d.ts.map +1 -0
  51. package/dist/{steps/builtin → connectors/builtin/steps}/map.step.js +4 -4
  52. package/dist/connectors/builtin/steps/map.step.js.map +1 -0
  53. package/dist/{steps/builtin → connectors/builtin/steps}/parallel.step.d.ts +4 -4
  54. package/dist/connectors/builtin/steps/parallel.step.d.ts.map +1 -0
  55. package/dist/{steps/builtin → connectors/builtin/steps}/parallel.step.js +3 -3
  56. package/dist/connectors/builtin/steps/parallel.step.js.map +1 -0
  57. package/dist/connectors/builtin/steps/ssrf-guard.d.ts.map +1 -0
  58. package/dist/connectors/builtin/steps/ssrf-guard.js.map +1 -0
  59. package/dist/{steps/builtin → connectors/builtin/steps}/switch.step.d.ts +14 -14
  60. package/dist/connectors/builtin/steps/switch.step.d.ts.map +1 -0
  61. package/dist/{steps/builtin → connectors/builtin/steps}/switch.step.js +4 -4
  62. package/dist/connectors/builtin/steps/switch.step.js.map +1 -0
  63. package/dist/{steps/builtin → connectors/builtin/steps}/wait.step.d.ts +4 -4
  64. package/dist/connectors/builtin/steps/wait.step.d.ts.map +1 -0
  65. package/dist/{steps/builtin → connectors/builtin/steps}/wait.step.js +4 -4
  66. package/dist/connectors/builtin/steps/wait.step.js.map +1 -0
  67. package/dist/{triggers/builtin → connectors/builtin/triggers}/default-cron-trigger.d.ts +4 -4
  68. package/dist/connectors/builtin/triggers/default-cron-trigger.d.ts.map +1 -0
  69. package/dist/{triggers/builtin → connectors/builtin/triggers}/default-cron-trigger.js +3 -3
  70. package/dist/connectors/builtin/triggers/default-cron-trigger.js.map +1 -0
  71. package/dist/{triggers/builtin → connectors/builtin/triggers}/default-event-trigger.d.ts +3 -3
  72. package/dist/connectors/builtin/triggers/default-event-trigger.d.ts.map +1 -0
  73. package/dist/{triggers/builtin → connectors/builtin/triggers}/default-event-trigger.js +3 -3
  74. package/dist/connectors/builtin/triggers/default-event-trigger.js.map +1 -0
  75. package/dist/{triggers/builtin → connectors/builtin/triggers}/default-manual-trigger.d.ts +3 -3
  76. package/dist/connectors/builtin/triggers/default-manual-trigger.d.ts.map +1 -0
  77. package/dist/{triggers/builtin → connectors/builtin/triggers}/default-manual-trigger.js +3 -3
  78. package/dist/connectors/builtin/triggers/default-manual-trigger.js.map +1 -0
  79. package/dist/{triggers/builtin → connectors/builtin/triggers}/default-webhook-v2-trigger.d.ts +10 -8
  80. package/dist/connectors/builtin/triggers/default-webhook-v2-trigger.d.ts.map +1 -0
  81. package/dist/{triggers/builtin → connectors/builtin/triggers}/default-webhook-v2-trigger.js +10 -8
  82. package/dist/connectors/builtin/triggers/default-webhook-v2-trigger.js.map +1 -0
  83. package/dist/connectors/core/base-connector.d.ts +50 -0
  84. package/dist/connectors/core/base-connector.d.ts.map +1 -0
  85. package/dist/connectors/core/base-connector.js +8 -0
  86. package/dist/connectors/core/base-connector.js.map +1 -0
  87. package/dist/connectors/core/connector-registry.d.ts +130 -0
  88. package/dist/connectors/core/connector-registry.d.ts.map +1 -0
  89. package/dist/connectors/core/connector-registry.js +353 -0
  90. package/dist/connectors/core/connector-registry.js.map +1 -0
  91. package/dist/connectors/core/credentials.d.ts +104 -0
  92. package/dist/connectors/core/credentials.d.ts.map +1 -0
  93. package/dist/connectors/core/credentials.js +67 -0
  94. package/dist/connectors/core/credentials.js.map +1 -0
  95. package/dist/connectors/core/index.d.ts +7 -0
  96. package/dist/connectors/core/index.d.ts.map +1 -0
  97. package/dist/connectors/core/index.js +5 -0
  98. package/dist/connectors/core/index.js.map +1 -0
  99. package/dist/engine/available-context.d.ts +3 -4
  100. package/dist/engine/available-context.d.ts.map +1 -1
  101. package/dist/engine/available-context.js +17 -13
  102. package/dist/engine/available-context.js.map +1 -1
  103. package/dist/engine/config-validator.d.ts +13 -5
  104. package/dist/engine/config-validator.d.ts.map +1 -1
  105. package/dist/engine/config-validator.js +89 -11
  106. package/dist/engine/config-validator.js.map +1 -1
  107. package/dist/engine/credential-resolver.d.ts +42 -0
  108. package/dist/engine/credential-resolver.d.ts.map +1 -0
  109. package/dist/engine/credential-resolver.js +63 -0
  110. package/dist/engine/credential-resolver.js.map +1 -0
  111. package/dist/engine/workflow-executor.d.ts +4 -5
  112. package/dist/engine/workflow-executor.d.ts.map +1 -1
  113. package/dist/engine/workflow-executor.js +16 -38
  114. package/dist/engine/workflow-executor.js.map +1 -1
  115. package/dist/index.d.ts +43 -28
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +30 -15
  118. package/dist/index.js.map +1 -1
  119. package/dist/ingest/body.d.ts +18 -0
  120. package/dist/ingest/body.d.ts.map +1 -0
  121. package/dist/ingest/body.js +47 -0
  122. package/dist/ingest/body.js.map +1 -0
  123. package/dist/ingest/filter.d.ts +11 -0
  124. package/dist/ingest/filter.d.ts.map +1 -0
  125. package/dist/ingest/filter.js +23 -0
  126. package/dist/ingest/filter.js.map +1 -0
  127. package/dist/ingest/headers.d.ts +3 -0
  128. package/dist/ingest/headers.d.ts.map +1 -0
  129. package/dist/ingest/headers.js +11 -0
  130. package/dist/ingest/headers.js.map +1 -0
  131. package/dist/ingest/types.d.ts +50 -0
  132. package/dist/ingest/types.d.ts.map +1 -0
  133. package/dist/ingest/types.js +9 -0
  134. package/dist/ingest/types.js.map +1 -0
  135. package/dist/persistence/in-memory-adapter.d.ts +4 -8
  136. package/dist/persistence/in-memory-adapter.d.ts.map +1 -1
  137. package/dist/persistence/in-memory-adapter.js +8 -25
  138. package/dist/persistence/in-memory-adapter.js.map +1 -1
  139. package/dist/persistence/types.d.ts +5 -19
  140. package/dist/persistence/types.d.ts.map +1 -1
  141. package/dist/router/types.d.ts +31 -3
  142. package/dist/router/types.d.ts.map +1 -1
  143. package/dist/router/workflow-router.d.ts +4 -3
  144. package/dist/router/workflow-router.d.ts.map +1 -1
  145. package/dist/router/workflow-router.js +84 -41
  146. package/dist/router/workflow-router.js.map +1 -1
  147. package/dist/runtime/types.d.ts +6 -4
  148. package/dist/runtime/types.d.ts.map +1 -1
  149. package/dist/runtime/workflow-runtime.d.ts +46 -37
  150. package/dist/runtime/workflow-runtime.d.ts.map +1 -1
  151. package/dist/runtime/workflow-runtime.js +173 -133
  152. package/dist/runtime/workflow-runtime.js.map +1 -1
  153. package/dist/steps/base-step.d.ts +24 -0
  154. package/dist/steps/base-step.d.ts.map +1 -1
  155. package/dist/steps/base-step.js +23 -0
  156. package/dist/steps/base-step.js.map +1 -1
  157. package/dist/steps/{step-registry.d.ts → step-descriptor.d.ts} +24 -32
  158. package/dist/steps/step-descriptor.d.ts.map +1 -0
  159. package/dist/steps/step-descriptor.js +33 -0
  160. package/dist/steps/step-descriptor.js.map +1 -0
  161. package/dist/testing/authz-conformance.d.ts.map +1 -1
  162. package/dist/testing/authz-conformance.js +6 -7
  163. package/dist/testing/authz-conformance.js.map +1 -1
  164. package/dist/testing/index.d.ts +1 -0
  165. package/dist/testing/index.d.ts.map +1 -1
  166. package/dist/testing/index.js +1 -0
  167. package/dist/testing/index.js.map +1 -1
  168. package/dist/testing/mock-step-context.d.ts +1 -0
  169. package/dist/testing/mock-step-context.d.ts.map +1 -1
  170. package/dist/testing/mock-step-context.js +1 -0
  171. package/dist/testing/mock-step-context.js.map +1 -1
  172. package/dist/testing/test-connector.d.ts +40 -0
  173. package/dist/testing/test-connector.d.ts.map +1 -0
  174. package/dist/testing/test-connector.js +39 -0
  175. package/dist/testing/test-connector.js.map +1 -0
  176. package/dist/triggers/api-trigger.d.ts +15 -0
  177. package/dist/triggers/api-trigger.d.ts.map +1 -0
  178. package/dist/triggers/api-trigger.js +14 -0
  179. package/dist/triggers/api-trigger.js.map +1 -0
  180. package/dist/triggers/base-trigger.d.ts +30 -0
  181. package/dist/triggers/base-trigger.d.ts.map +1 -1
  182. package/dist/triggers/base-trigger.js +17 -0
  183. package/dist/triggers/base-trigger.js.map +1 -1
  184. package/dist/triggers/trigger-descriptor.d.ts +44 -0
  185. package/dist/triggers/trigger-descriptor.d.ts.map +1 -0
  186. package/dist/triggers/trigger-descriptor.js +30 -0
  187. package/dist/triggers/trigger-descriptor.js.map +1 -0
  188. package/dist/triggers/webhook-trigger.d.ts +48 -36
  189. package/dist/triggers/webhook-trigger.d.ts.map +1 -1
  190. package/dist/triggers/webhook-trigger.js +40 -6
  191. package/dist/triggers/webhook-trigger.js.map +1 -1
  192. package/dist/types/known-types.d.ts +0 -1
  193. package/dist/types/known-types.d.ts.map +1 -1
  194. package/dist/types/known-types.js +0 -1
  195. package/dist/types/known-types.js.map +1 -1
  196. package/dist/types/validation.d.ts +3 -1
  197. package/dist/types/validation.d.ts.map +1 -1
  198. package/dist/types/validation.js +2 -0
  199. package/dist/types/validation.js.map +1 -1
  200. package/dist/types/workflow-config.d.ts +23 -0
  201. package/dist/types/workflow-config.d.ts.map +1 -1
  202. package/dist/types/workflow-config.js +8 -0
  203. package/dist/types/workflow-config.js.map +1 -1
  204. package/dist/util/credential-slot-schema.d.ts +20 -0
  205. package/dist/util/credential-slot-schema.d.ts.map +1 -0
  206. package/dist/util/credential-slot-schema.js +30 -0
  207. package/dist/util/credential-slot-schema.js.map +1 -0
  208. package/package.json +1 -1
  209. package/dist/runtime/execution-event-bus.d.ts +0 -38
  210. package/dist/runtime/execution-event-bus.d.ts.map +0 -1
  211. package/dist/runtime/execution-event-bus.js +0 -87
  212. package/dist/runtime/execution-event-bus.js.map +0 -1
  213. package/dist/steps/builtin/code.step.d.ts.map +0 -1
  214. package/dist/steps/builtin/code.step.js.map +0 -1
  215. package/dist/steps/builtin/conditional.step.d.ts.map +0 -1
  216. package/dist/steps/builtin/conditional.step.js.map +0 -1
  217. package/dist/steps/builtin/dedup.step.d.ts.map +0 -1
  218. package/dist/steps/builtin/dedup.step.js.map +0 -1
  219. package/dist/steps/builtin/http-request.step.d.ts.map +0 -1
  220. package/dist/steps/builtin/http-request.step.js.map +0 -1
  221. package/dist/steps/builtin/loop.step.d.ts.map +0 -1
  222. package/dist/steps/builtin/loop.step.js.map +0 -1
  223. package/dist/steps/builtin/map.step.d.ts.map +0 -1
  224. package/dist/steps/builtin/map.step.js.map +0 -1
  225. package/dist/steps/builtin/parallel.step.d.ts.map +0 -1
  226. package/dist/steps/builtin/parallel.step.js.map +0 -1
  227. package/dist/steps/builtin/ssrf-guard.d.ts.map +0 -1
  228. package/dist/steps/builtin/ssrf-guard.js.map +0 -1
  229. package/dist/steps/builtin/switch.step.d.ts.map +0 -1
  230. package/dist/steps/builtin/switch.step.js.map +0 -1
  231. package/dist/steps/builtin/wait.step.d.ts.map +0 -1
  232. package/dist/steps/builtin/wait.step.js.map +0 -1
  233. package/dist/steps/step-registry.d.ts.map +0 -1
  234. package/dist/steps/step-registry.js +0 -103
  235. package/dist/steps/step-registry.js.map +0 -1
  236. package/dist/triggers/builtin/default-cron-trigger.d.ts.map +0 -1
  237. package/dist/triggers/builtin/default-cron-trigger.js.map +0 -1
  238. package/dist/triggers/builtin/default-event-trigger.d.ts.map +0 -1
  239. package/dist/triggers/builtin/default-event-trigger.js.map +0 -1
  240. package/dist/triggers/builtin/default-manual-trigger.d.ts.map +0 -1
  241. package/dist/triggers/builtin/default-manual-trigger.js.map +0 -1
  242. package/dist/triggers/builtin/default-webhook-trigger.d.ts +0 -72
  243. package/dist/triggers/builtin/default-webhook-trigger.d.ts.map +0 -1
  244. package/dist/triggers/builtin/default-webhook-trigger.js +0 -91
  245. package/dist/triggers/builtin/default-webhook-trigger.js.map +0 -1
  246. package/dist/triggers/builtin/default-webhook-v2-trigger.d.ts.map +0 -1
  247. package/dist/triggers/builtin/default-webhook-v2-trigger.js.map +0 -1
  248. package/dist/triggers/trigger-registry.d.ts +0 -48
  249. package/dist/triggers/trigger-registry.d.ts.map +0 -1
  250. package/dist/triggers/trigger-registry.js +0 -83
  251. package/dist/triggers/trigger-registry.js.map +0 -1
  252. /package/dist/{steps/builtin → connectors/builtin/steps}/ssrf-guard.d.ts +0 -0
  253. /package/dist/{steps/builtin → connectors/builtin/steps}/ssrf-guard.js +0 -0
@@ -0,0 +1,8 @@
1
+ export class BaseConnector {
2
+ /**
3
+ * Icon name for the connector's palette entry — `"git-branch"`. The builder
4
+ * lists connectors before their steps and triggers, so each needs its own mark.
5
+ */
6
+ icon;
7
+ }
8
+ //# sourceMappingURL=base-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-connector.js","sourceRoot":"","sources":["../../../src/connectors/core/base-connector.ts"],"names":[],"mappings":"AAWA,MAAM,OAAgB,aAAa;IAiBjC;;;OAGG;IACM,IAAI,CAAU;CA6BxB"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * ConnectorRegistry — the single place components become known to the system.
3
+ *
4
+ * ─── What it replaces ───
5
+ *
6
+ * A host used to assemble four separate things by hand: `StepRegistry`,
7
+ * `TriggerRegistry`, `ServiceRegistry`, and a fixed central credential union.
8
+ * Nothing tied them together, so a step could register while the service it
9
+ * needed did not, and a credential could exist that no component could name —
10
+ * failing mid-execution. Those three registries are gone; this is the one.
11
+ *
12
+ * A host registers ONE complete connector and gets all of it at once:
13
+ *
14
+ * connectors.register(new GmailConnector());
15
+ *
16
+ * There is deliberately no `registerStep`, `registerTrigger`, or
17
+ * `registerCredential`. If those existed, a component could enter the system
18
+ * without an owning connector — and every check below depends on knowing the
19
+ * owner.
20
+ */
21
+ import type { BaseConnector, AnyStep, AnyTrigger } from './base-connector.js';
22
+ import type { StepSummary, StepDescriptor } from '../../steps/step-descriptor.js';
23
+ import type { TriggerSummary, TriggerDescriptor } from '../../triggers/trigger-descriptor.js';
24
+ import type { CredentialDefinition } from './credentials.js';
25
+ import type { ConnectorCredentialTypes } from '../../common/credentials.js';
26
+ /** A step plus the identity of the connector that provides it. */
27
+ export interface RegisteredStep {
28
+ readonly connectorId: string;
29
+ readonly connectorName: string;
30
+ readonly step: AnyStep;
31
+ }
32
+ /** A trigger plus the identity of the connector that provides it. */
33
+ export interface RegisteredTrigger {
34
+ readonly connectorId: string;
35
+ readonly connectorName: string;
36
+ readonly trigger: AnyTrigger;
37
+ }
38
+ /** A credential definition plus the identity of the connector that declares it. */
39
+ export interface RegisteredCredential {
40
+ readonly connectorId: string;
41
+ readonly connectorName: string;
42
+ readonly definition: CredentialDefinition;
43
+ }
44
+ /**
45
+ * A connector was rejected at registration.
46
+ *
47
+ * Carries EVERY problem found, not just the first. Registration happens at
48
+ * boot, so a developer fixing a new connector otherwise plays whack-a-mole:
49
+ * restart, see one error, fix, restart. One throw listing all four mistakes
50
+ * turns that into a single edit.
51
+ */
52
+ export declare class ConnectorRegistrationError extends Error {
53
+ readonly connectorId: string;
54
+ readonly problems: readonly string[];
55
+ constructor(connectorId: string, problems: readonly string[]);
56
+ }
57
+ /** A lookup named something that was never registered. */
58
+ export declare class UnknownComponentError extends Error {
59
+ readonly kind: 'connector' | 'step' | 'trigger' | 'credential';
60
+ readonly id: string;
61
+ constructor(kind: 'connector' | 'step' | 'trigger' | 'credential', id: string);
62
+ }
63
+ export declare class ConnectorRegistry {
64
+ private readonly connectorsById;
65
+ private readonly stepsByType;
66
+ private readonly triggersByType;
67
+ private readonly credentialsByType;
68
+ constructor();
69
+ /**
70
+ * Register a complete connector, or reject it entirely.
71
+ *
72
+ * @throws {ConnectorRegistrationError} listing every problem found.
73
+ */
74
+ register(connector: BaseConnector): void;
75
+ /** @throws {UnknownComponentError} when no such connector is registered. */
76
+ getConnector(connectorId: string): BaseConnector;
77
+ /** @throws {UnknownComponentError} when no registered connector provides it. */
78
+ getStep(stepType: string): AnyStep;
79
+ /** @throws {UnknownComponentError} when no registered connector provides it. */
80
+ getTrigger(triggerType: string): AnyTrigger;
81
+ /**
82
+ * Non-throwing lookups, for callers deciding IF a component exists rather
83
+ * than assuming it does — validating a saved workflow against the connectors
84
+ * this deployment actually registered, for instance.
85
+ *
86
+ * Without these, "is this step available?" has to be written as try/catch
87
+ * around `getStep()`, which is control flow by exception and swallows real
88
+ * errors as readily as missing ones.
89
+ */
90
+ findStep(stepType: string): RegisteredStep | undefined;
91
+ findTrigger(triggerType: string): RegisteredTrigger | undefined;
92
+ /** @throws {UnknownComponentError} when no registered connector declares it. */
93
+ getCredentialDefinition(credType: string): CredentialDefinition;
94
+ findCredentialDefinition(credType: string): CredentialDefinition | undefined;
95
+ hasConnector(connectorId: string): boolean;
96
+ hasStep(stepType: string): boolean;
97
+ hasTrigger(triggerType: string): boolean;
98
+ listConnectors(): readonly BaseConnector[];
99
+ /** Every step from every registered connector, each tagged with its owner. */
100
+ listSteps(): readonly RegisteredStep[];
101
+ listTriggers(): readonly RegisteredTrigger[];
102
+ listStepSummaries(): StepSummary[];
103
+ /** @throws {UnknownComponentError} when no registered connector provides it. */
104
+ getStepDescriptor(stepType: string): StepDescriptor;
105
+ listTriggerSummaries(): TriggerSummary[];
106
+ /** @throws {UnknownComponentError} when no registered connector provides it. */
107
+ getTriggerDescriptor(triggerType: string): TriggerDescriptor;
108
+ /**
109
+ * Every credential type, grouped by the connector that declares it, with the
110
+ * form fields its shape needs. What the vault's create flow renders from.
111
+ * Connectors that declare no credentials are omitted.
112
+ */
113
+ listCredentialTypes(): ConnectorCredentialTypes[];
114
+ /**
115
+ * Every reason this connector cannot be registered. Empty means valid.
116
+ *
117
+ * Pure: reads state, writes none. That is what makes atomic registration
118
+ * possible — the caller can know the verdict before touching a map.
119
+ */
120
+ private findProblems;
121
+ /**
122
+ * Validate the connector's credential declarations.
123
+ *
124
+ * @returns the types it declares — the authority for the component checks below.
125
+ */
126
+ private checkCredentials;
127
+ private checkSteps;
128
+ private checkTriggers;
129
+ }
130
+ //# sourceMappingURL=connector-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-registry.d.ts","sourceRoot":"","sources":["../../../src/connectors/core/connector-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,353 @@
1
+ /**
2
+ * ConnectorRegistry — the single place components become known to the system.
3
+ *
4
+ * ─── What it replaces ───
5
+ *
6
+ * A host used to assemble four separate things by hand: `StepRegistry`,
7
+ * `TriggerRegistry`, `ServiceRegistry`, and a fixed central credential union.
8
+ * Nothing tied them together, so a step could register while the service it
9
+ * needed did not, and a credential could exist that no component could name —
10
+ * failing mid-execution. Those three registries are gone; this is the one.
11
+ *
12
+ * A host registers ONE complete connector and gets all of it at once:
13
+ *
14
+ * connectors.register(new GmailConnector());
15
+ *
16
+ * There is deliberately no `registerStep`, `registerTrigger`, or
17
+ * `registerCredential`. If those existed, a component could enter the system
18
+ * without an owning connector — and every check below depends on knowing the
19
+ * owner.
20
+ */
21
+ import { BuiltinConnector } from '../builtin/builtin-connector.js';
22
+ import { buildStepSummary, buildStepDescriptor } from '../../steps/step-descriptor.js';
23
+ import { buildTriggerSummary, buildTriggerDescriptor } from '../../triggers/trigger-descriptor.js';
24
+ import { CREDENTIAL_TYPE_PATTERN } from './credentials.js';
25
+ import { CREDENTIAL_AUTH_REGISTRY } from '../../common/credentials.js';
26
+ // ─── Errors ───
27
+ /**
28
+ * A connector was rejected at registration.
29
+ *
30
+ * Carries EVERY problem found, not just the first. Registration happens at
31
+ * boot, so a developer fixing a new connector otherwise plays whack-a-mole:
32
+ * restart, see one error, fix, restart. One throw listing all four mistakes
33
+ * turns that into a single edit.
34
+ */
35
+ export class ConnectorRegistrationError extends Error {
36
+ connectorId;
37
+ problems;
38
+ constructor(connectorId, problems) {
39
+ super(`ConnectorRegistry: cannot register connector "${connectorId}":\n` +
40
+ problems.map((problem) => ` - ${problem}`).join('\n'));
41
+ this.name = 'ConnectorRegistrationError';
42
+ this.connectorId = connectorId;
43
+ this.problems = problems;
44
+ }
45
+ }
46
+ /** A lookup named something that was never registered. */
47
+ export class UnknownComponentError extends Error {
48
+ kind;
49
+ id;
50
+ constructor(kind, id) {
51
+ super(`ConnectorRegistry: unknown ${kind} "${id}". ` +
52
+ `Is its connector registered at boot?`);
53
+ this.name = 'UnknownComponentError';
54
+ this.kind = kind;
55
+ this.id = id;
56
+ }
57
+ }
58
+ // ─── Registry ───
59
+ export class ConnectorRegistry {
60
+ connectorsById = new Map();
61
+ stepsByType = new Map();
62
+ triggersByType = new Map();
63
+ credentialsByType = new Map();
64
+ constructor() {
65
+ this.register(new BuiltinConnector());
66
+ }
67
+ /**
68
+ * Register a complete connector, or reject it entirely.
69
+ *
70
+ * @throws {ConnectorRegistrationError} listing every problem found.
71
+ */
72
+ register(connector) {
73
+ const problems = this.findProblems(connector);
74
+ if (problems.length > 0) {
75
+ throw new ConnectorRegistrationError(connector.id, problems);
76
+ }
77
+ // Commit. Only reached when the connector is wholly valid, so no partial
78
+ // write is possible — this is the atomicity guarantee, and it is why
79
+ // validation cannot be interleaved with insertion.
80
+ this.connectorsById.set(connector.id, connector);
81
+ for (const definition of connector.credentials) {
82
+ this.credentialsByType.set(definition.credType, {
83
+ connectorId: connector.id,
84
+ connectorName: connector.name,
85
+ definition,
86
+ });
87
+ }
88
+ for (const step of connector.steps) {
89
+ // Stamp WHO owns it, so the palette can group by connector. The step
90
+ // itself never sets these — its owner does, here, at registration.
91
+ stampOwner(step, connector);
92
+ this.stepsByType.set(step.type, {
93
+ connectorId: connector.id,
94
+ connectorName: connector.name,
95
+ step,
96
+ });
97
+ }
98
+ for (const trigger of connector.triggers) {
99
+ stampOwner(trigger, connector);
100
+ this.triggersByType.set(trigger.type, {
101
+ connectorId: connector.id,
102
+ connectorName: connector.name,
103
+ trigger,
104
+ });
105
+ }
106
+ }
107
+ // ─── Lookups ───
108
+ /** @throws {UnknownComponentError} when no such connector is registered. */
109
+ getConnector(connectorId) {
110
+ const connector = this.connectorsById.get(connectorId);
111
+ if (!connector)
112
+ throw new UnknownComponentError('connector', connectorId);
113
+ return connector;
114
+ }
115
+ /** @throws {UnknownComponentError} when no registered connector provides it. */
116
+ getStep(stepType) {
117
+ const registered = this.stepsByType.get(stepType);
118
+ if (!registered)
119
+ throw new UnknownComponentError('step', stepType);
120
+ return registered.step;
121
+ }
122
+ /** @throws {UnknownComponentError} when no registered connector provides it. */
123
+ getTrigger(triggerType) {
124
+ const registered = this.triggersByType.get(triggerType);
125
+ if (!registered)
126
+ throw new UnknownComponentError('trigger', triggerType);
127
+ return registered.trigger;
128
+ }
129
+ /**
130
+ * Non-throwing lookups, for callers deciding IF a component exists rather
131
+ * than assuming it does — validating a saved workflow against the connectors
132
+ * this deployment actually registered, for instance.
133
+ *
134
+ * Without these, "is this step available?" has to be written as try/catch
135
+ * around `getStep()`, which is control flow by exception and swallows real
136
+ * errors as readily as missing ones.
137
+ */
138
+ findStep(stepType) {
139
+ return this.stepsByType.get(stepType);
140
+ }
141
+ findTrigger(triggerType) {
142
+ return this.triggersByType.get(triggerType);
143
+ }
144
+ /** @throws {UnknownComponentError} when no registered connector declares it. */
145
+ getCredentialDefinition(credType) {
146
+ const registered = this.credentialsByType.get(credType);
147
+ if (!registered)
148
+ throw new UnknownComponentError('credential', credType);
149
+ return registered.definition;
150
+ }
151
+ findCredentialDefinition(credType) {
152
+ return this.credentialsByType.get(credType)?.definition;
153
+ }
154
+ hasConnector(connectorId) {
155
+ return this.connectorsById.has(connectorId);
156
+ }
157
+ hasStep(stepType) {
158
+ return this.stepsByType.has(stepType);
159
+ }
160
+ hasTrigger(triggerType) {
161
+ return this.triggersByType.has(triggerType);
162
+ }
163
+ // ─── Listings ───
164
+ listConnectors() {
165
+ return Array.from(this.connectorsById.values());
166
+ }
167
+ /** Every step from every registered connector, each tagged with its owner. */
168
+ listSteps() {
169
+ return Array.from(this.stepsByType.values());
170
+ }
171
+ listTriggers() {
172
+ return Array.from(this.triggersByType.values());
173
+ }
174
+ // ─── Catalogue (what the builder's palette and detail endpoints read) ───
175
+ //
176
+ // These answer the questions `StepRegistry` / `TriggerRegistry` used to. They
177
+ // are here rather than in a fourth registry because a component cannot be
178
+ // described without knowing its owner, and this is the only object that does.
179
+ listStepSummaries() {
180
+ return this.listSteps().map((r) => buildStepSummary(r.step));
181
+ }
182
+ /** @throws {UnknownComponentError} when no registered connector provides it. */
183
+ getStepDescriptor(stepType) {
184
+ return buildStepDescriptor(this.getStep(stepType));
185
+ }
186
+ listTriggerSummaries() {
187
+ return this.listTriggers().map((r) => buildTriggerSummary(r.trigger));
188
+ }
189
+ /** @throws {UnknownComponentError} when no registered connector provides it. */
190
+ getTriggerDescriptor(triggerType) {
191
+ return buildTriggerDescriptor(this.getTrigger(triggerType));
192
+ }
193
+ /**
194
+ * Every credential type, grouped by the connector that declares it, with the
195
+ * form fields its shape needs. What the vault's create flow renders from.
196
+ * Connectors that declare no credentials are omitted.
197
+ */
198
+ listCredentialTypes() {
199
+ return this.listConnectors()
200
+ .filter((connector) => connector.credentials.length > 0)
201
+ .map((connector) => ({
202
+ connectorId: connector.id,
203
+ connectorName: connector.name,
204
+ credentials: connector.credentials.map((definition) => ({
205
+ credType: definition.credType,
206
+ label: definition.label,
207
+ ...(definition.description !== undefined
208
+ ? { description: definition.description }
209
+ : {}),
210
+ authType: definition.authType,
211
+ fields: CREDENTIAL_AUTH_REGISTRY.find((entry) => entry.type === definition.authType)
212
+ ?.fields ?? [],
213
+ })),
214
+ }));
215
+ }
216
+ // ─── Validation ───
217
+ /**
218
+ * Every reason this connector cannot be registered. Empty means valid.
219
+ *
220
+ * Pure: reads state, writes none. That is what makes atomic registration
221
+ * possible — the caller can know the verdict before touching a map.
222
+ */
223
+ findProblems(connector) {
224
+ const problems = [];
225
+ if (!connector.id) {
226
+ problems.push('connector id must not be empty');
227
+ }
228
+ if (this.connectorsById.has(connector.id)) {
229
+ problems.push(`connector id "${connector.id}" is already registered. ` +
230
+ `Registering the same connector twice is usually a duplicated ` +
231
+ `host wiring line.`);
232
+ }
233
+ const declared = this.checkCredentials(connector, problems);
234
+ this.checkSteps(connector, declared, problems);
235
+ this.checkTriggers(connector, declared, problems);
236
+ return problems;
237
+ }
238
+ /**
239
+ * Validate the connector's credential declarations.
240
+ *
241
+ * @returns the types it declares — the authority for the component checks below.
242
+ */
243
+ checkCredentials(connector, problems) {
244
+ const declared = new Set();
245
+ for (const definition of connector.credentials) {
246
+ if (!CREDENTIAL_TYPE_PATTERN.test(definition.credType)) {
247
+ problems.push(`credential type "${definition.credType}" must be SCREAMING_SNAKE_CASE, ` +
248
+ `e.g. "SLACK_BOT_TOKEN"`);
249
+ }
250
+ // Ownership: a definition borrowed from another connector would let this
251
+ // one claim a type that is not its own.
252
+ if (definition.connectorId !== connector.id) {
253
+ problems.push(`credential type "${definition.credType}" belongs to connector ` +
254
+ `"${definition.connectorId}" but is declared by "${connector.id}"`);
255
+ }
256
+ if (declared.has(definition.credType)) {
257
+ problems.push(`credential type "${definition.credType}" is declared twice`);
258
+ }
259
+ declared.add(definition.credType);
260
+ // Global uniqueness. The type is what stored credentials carry, so two
261
+ // connectors answering to one type would make ownership ambiguous.
262
+ const existing = this.credentialsByType.get(definition.credType);
263
+ if (existing) {
264
+ problems.push(`credential type "${definition.credType}" is already declared by connector ` +
265
+ `"${existing.connectorId}". Prefix types with the connector name.`);
266
+ }
267
+ }
268
+ return declared;
269
+ }
270
+ checkSteps(connector, declaredCredentialTypes, problems) {
271
+ const seen = new Set();
272
+ for (const step of connector.steps) {
273
+ if (!step.type) {
274
+ problems.push(`step "${step.name}" has an empty type id`);
275
+ }
276
+ if (seen.has(step.type)) {
277
+ problems.push(`step type "${step.type}" is declared twice`);
278
+ }
279
+ seen.add(step.type);
280
+ // A step may only accept credential types its OWN connector declares.
281
+ // This is what catches a step wired to a definition the connector forgot
282
+ // to list: without it the credential picker would render empty and the
283
+ // run would fail with "no credential configured", pointing at the user
284
+ // rather than at the wiring.
285
+ checkAcceptedCredentials(`step "${step.type}"`, step.credential, connector.id, declaredCredentialTypes, problems);
286
+ checkCredentialSlots(`step "${step.type}"`, step.credentialSlots, problems);
287
+ // Global uniqueness. Step type IDs are the key saved workflows store, so
288
+ // two implementations answering to one ID means dispatch silently picks
289
+ // whichever registered last. A boot failure is the only safe outcome.
290
+ const existing = this.stepsByType.get(step.type);
291
+ if (existing) {
292
+ problems.push(`step type "${step.type}" is already registered by connector ` +
293
+ `"${existing.connectorId}". Namespace new components as ` +
294
+ `"<connector-id>.<action>".`);
295
+ }
296
+ }
297
+ }
298
+ checkTriggers(connector, declaredCredentialTypes, problems) {
299
+ const seen = new Set();
300
+ for (const trigger of connector.triggers) {
301
+ if (!trigger.type) {
302
+ problems.push(`trigger "${trigger.name}" has an empty type id`);
303
+ }
304
+ if (seen.has(trigger.type)) {
305
+ problems.push(`trigger type "${trigger.type}" is declared twice`);
306
+ }
307
+ seen.add(trigger.type);
308
+ checkAcceptedCredentials(`trigger "${trigger.type}"`, trigger.credential, connector.id, declaredCredentialTypes, problems);
309
+ checkCredentialSlots(`trigger "${trigger.type}"`, trigger.credentialSlots, problems);
310
+ const existing = this.triggersByType.get(trigger.type);
311
+ if (existing) {
312
+ problems.push(`trigger type "${trigger.type}" is already registered by connector ` +
313
+ `"${existing.connectorId}"`);
314
+ }
315
+ }
316
+ }
317
+ }
318
+ /**
319
+ * A component may only accept credential types its OWN connector declares.
320
+ *
321
+ * Without this, a component wired to a definition its connector forgot to list
322
+ * would render an empty credential picker and fail at run time with "no
323
+ * credential configured", pointing at the user rather than at the wiring.
324
+ */
325
+ function checkAcceptedCredentials(subject, accepted, connectorId, declared, problems) {
326
+ for (const definition of accepted ?? []) {
327
+ if (declared.has(definition.credType))
328
+ continue;
329
+ problems.push(`${subject} accepts credential type "${definition.credType}", which ` +
330
+ `connector "${connectorId}" does not declare`);
331
+ }
332
+ }
333
+ /** Slot names are the config fields credentials are read from, so they must be unique. */
334
+ function checkCredentialSlots(subject, slots, problems) {
335
+ const seen = new Set();
336
+ for (const slot of slots ?? []) {
337
+ if (!slot.name)
338
+ problems.push(`${subject} has a credential slot with an empty name`);
339
+ if (seen.has(slot.name)) {
340
+ problems.push(`${subject} declares credential slot "${slot.name}" twice`);
341
+ }
342
+ seen.add(slot.name);
343
+ }
344
+ }
345
+ /** Owner facts written onto a registered component, for the palette. */
346
+ function stampOwner(target, connector) {
347
+ const bag = target;
348
+ bag.connectorId = connector.id;
349
+ bag.connectorName = connector.name;
350
+ if (connector.icon !== undefined)
351
+ bag.connectorIcon = connector.icon;
352
+ }
353
+ //# sourceMappingURL=connector-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-registry.js","sourceRoot":"","sources":["../../../src/connectors/core/connector-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * What a connector declares about its credentials, and what a component accepts.
3
+ *
4
+ * ─── Type and shape are different things ───
5
+ *
6
+ * A credential has a TYPE and a SHAPE.
7
+ *
8
+ * - The type, `credType`, is the connector's own enum value — `SLACK_BOT_TOKEN`,
9
+ * `GITHUB_WEBHOOK_SECRET`. It says who owns the credential and what it is for,
10
+ * and it is what compatibility is checked on: a Slack step lists only Slack
11
+ * credentials, even though a Jira token has the same shape.
12
+ * - The shape, `authType`, is one of the framework's small fixed set
13
+ * ({@link CredentialAuthType}). It decides how values are stored, which form
14
+ * the vault renders, and how the value is applied to an outbound request.
15
+ *
16
+ * A definition binds one type to one shape, and a stored credential carries both.
17
+ *
18
+ * ─── Definitions are referenced, not retyped ───
19
+ *
20
+ * Components refer to the DEFINITION OBJECT rather than repeating the type as
21
+ * text, so a typo is a compile error rather than a boot error:
22
+ *
23
+ * export const SLACK_BOT_TOKEN = defineCredential({
24
+ * connectorId: 'slack', credType: 'SLACK_BOT_TOKEN',
25
+ * label: 'Bot token', authType: CredentialAuthType.Bearer,
26
+ * });
27
+ *
28
+ * override readonly credential = [SLACK_BOT_TOKEN]; // not ['SLACK_BOT_TOKEN']
29
+ */
30
+ import type { CredentialAuthType } from '../../common/credentials.js';
31
+ import type { AnyStep } from './base-connector.js';
32
+ /**
33
+ * The format a `credType` must follow: SCREAMING_SNAKE_CASE, the way the
34
+ * framework's other enums read. Checked by the registry at boot.
35
+ */
36
+ export declare const CREDENTIAL_TYPE_PATTERN: RegExp;
37
+ /**
38
+ * One credential type a connector offers. Build with {@link defineCredential}.
39
+ *
40
+ * Generic over the OWNING CONNECTOR'S ID so the owner survives in the type:
41
+ * a definition owned by `acme` and one owned by `other` are different types,
42
+ * which is what lets {@link declareSteps} reject a step reaching for another
43
+ * connector's credential without running anything.
44
+ */
45
+ export interface CredentialDefinition<TConnector extends string = string> {
46
+ /** The connector's enum value, e.g. `'SLACK_BOT_TOKEN'`. Globally unique. */
47
+ readonly credType: string;
48
+ /** The connector that owns it, for the registry's ownership check. */
49
+ readonly connectorId: TConnector;
50
+ /** Human label for the vault, e.g. `"Bot token"`. */
51
+ readonly label: string;
52
+ /** Where to find or how to choose the value. Shown when creating one. */
53
+ readonly description?: string;
54
+ /** The stored shape. Drives the vault's form and outbound application. */
55
+ readonly authType: CredentialAuthType;
56
+ }
57
+ /** Declare a credential type. Frozen, so every component holds the same object. */
58
+ export declare function defineCredential<TConnector extends string>(input: {
59
+ connectorId: TConnector;
60
+ credType: string;
61
+ label: string;
62
+ description?: string;
63
+ authType: CredentialAuthType;
64
+ }): CredentialDefinition<TConnector>;
65
+ /**
66
+ * The credential types a component accepts — the definitions themselves.
67
+ *
68
+ * Empty means "authenticates nothing", which is most components. This says
69
+ * WHICH types are acceptable, not WHETHER one is needed: that stays with
70
+ * `credentialSlots`, because HTTP_REQUEST accepts several types while needing
71
+ * none.
72
+ */
73
+ export type CredentialRequirement = readonly CredentialDefinition[];
74
+ /** A component that authenticates nothing — a CODE step, a LOOP step. */
75
+ export declare const NO_CREDENTIAL: CredentialRequirement;
76
+ /** Can a stored credential of this type satisfy the requirement? */
77
+ export declare function acceptsCredential(requirement: CredentialRequirement, credType: string): boolean;
78
+ /**
79
+ * A step, narrowed to the credential types one connector offers.
80
+ *
81
+ * `AnyStep` erases each step's credential types, which is what lets a registry
82
+ * hold steps from every connector in one map — and also what stops the compiler
83
+ * from noticing a step reaching for a credential its connector never declared.
84
+ * This type puts that information back for the one moment it matters: when a
85
+ * connector lists the steps it owns.
86
+ */
87
+ export type StepAccepting<TCredential extends CredentialDefinition> = Omit<AnyStep, 'credential'> & {
88
+ readonly credential?: readonly TCredential[];
89
+ };
90
+ /**
91
+ * Declare a connector's steps, checked against its credentials AT COMPILE TIME.
92
+ *
93
+ * override readonly credentials = BUILTIN_CREDENTIALS;
94
+ * override readonly steps = declareSteps(BUILTIN_CREDENTIALS, [
95
+ * new HttpRequestStep(), // accepts builtin types — fine
96
+ * new ForeignStep(), // accepts another connector's type — red squiggle
97
+ * ]);
98
+ *
99
+ * The registry makes the same check at boot, because a step whose `credential`
100
+ * is typed as the wide `CredentialDefinition[]` has no literal types left to
101
+ * compare.
102
+ */
103
+ export declare function declareSteps<TCredential extends CredentialDefinition>(_credentials: readonly TCredential[], steps: readonly StepAccepting<TCredential>[]): readonly AnyStep[];
104
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../../src/connectors/core/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAAoC,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM;IACtE,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;CACvC;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,UAAU,SAAS,MAAM,EAAE,KAAK,EAAE;IACjE,WAAW,EAAE,UAAU,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,kBAAkB,CAAC;CAC9B,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAQnC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,oBAAoB,EAAE,CAAC;AAEpE,yEAAyE;AACzE,eAAO,MAAM,aAAa,EAAE,qBAA0B,CAAC;AAEvD,oEAAoE;AACpE,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,qBAAqB,EAClC,QAAQ,EAAE,MAAM,GACf,OAAO,CAET;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,CAAC,WAAW,SAAS,oBAAoB,IAChE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;CAC9C,CAAC;AAEJ;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,WAAW,SAAS,oBAAoB,EACnE,YAAY,EAAE,SAAS,WAAW,EAAE,EACpC,KAAK,EAAE,SAAS,aAAa,CAAC,WAAW,CAAC,EAAE,GAC3C,SAAS,OAAO,EAAE,CAEpB"}