@xyne/workflow-sdk 3.2.37 → 3.2.38

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 (210) 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 +32 -0
  22. package/dist/connectors/builtin/builtin-connector.d.ts.map +1 -0
  23. package/dist/connectors/builtin/builtin-connector.js +62 -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/connectors/builtin/steps/code.step.d.ts +99 -0
  30. package/dist/connectors/builtin/steps/code.step.d.ts.map +1 -0
  31. package/dist/connectors/builtin/steps/code.step.js +152 -0
  32. package/dist/connectors/builtin/steps/code.step.js.map +1 -0
  33. package/dist/connectors/builtin/steps/conditional.step.d.ts +182 -0
  34. package/dist/connectors/builtin/steps/conditional.step.d.ts.map +1 -0
  35. package/dist/connectors/builtin/steps/conditional.step.js +82 -0
  36. package/dist/connectors/builtin/steps/conditional.step.js.map +1 -0
  37. package/dist/connectors/builtin/steps/dedup.step.d.ts +65 -0
  38. package/dist/connectors/builtin/steps/dedup.step.d.ts.map +1 -0
  39. package/dist/connectors/builtin/steps/dedup.step.js +61 -0
  40. package/dist/connectors/builtin/steps/dedup.step.js.map +1 -0
  41. package/dist/connectors/builtin/steps/http-request.step.d.ts +1027 -0
  42. package/dist/connectors/builtin/steps/http-request.step.d.ts.map +1 -0
  43. package/dist/connectors/builtin/steps/http-request.step.js +497 -0
  44. package/dist/connectors/builtin/steps/http-request.step.js.map +1 -0
  45. package/dist/connectors/builtin/steps/loop.step.d.ts +100 -0
  46. package/dist/connectors/builtin/steps/loop.step.d.ts.map +1 -0
  47. package/dist/connectors/builtin/steps/loop.step.js +73 -0
  48. package/dist/connectors/builtin/steps/loop.step.js.map +1 -0
  49. package/dist/connectors/builtin/steps/map.step.d.ts +148 -0
  50. package/dist/connectors/builtin/steps/map.step.d.ts.map +1 -0
  51. package/dist/connectors/builtin/steps/map.step.js +111 -0
  52. package/dist/connectors/builtin/steps/map.step.js.map +1 -0
  53. package/dist/connectors/builtin/steps/parallel.step.d.ts +246 -0
  54. package/dist/connectors/builtin/steps/parallel.step.d.ts.map +1 -0
  55. package/dist/connectors/builtin/steps/parallel.step.js +175 -0
  56. package/dist/connectors/builtin/steps/parallel.step.js.map +1 -0
  57. package/dist/connectors/builtin/steps/ssrf-guard.d.ts +9 -0
  58. package/dist/connectors/builtin/steps/ssrf-guard.d.ts.map +1 -0
  59. package/dist/connectors/builtin/steps/ssrf-guard.js +115 -0
  60. package/dist/connectors/builtin/steps/ssrf-guard.js.map +1 -0
  61. package/dist/connectors/builtin/steps/switch.step.d.ts +235 -0
  62. package/dist/connectors/builtin/steps/switch.step.d.ts.map +1 -0
  63. package/dist/connectors/builtin/steps/switch.step.js +101 -0
  64. package/dist/connectors/builtin/steps/switch.step.js.map +1 -0
  65. package/dist/connectors/builtin/steps/wait.step.d.ts +1072 -0
  66. package/dist/connectors/builtin/steps/wait.step.d.ts.map +1 -0
  67. package/dist/connectors/builtin/steps/wait.step.js +254 -0
  68. package/dist/connectors/builtin/steps/wait.step.js.map +1 -0
  69. package/dist/connectors/builtin/triggers/default-cron-trigger.d.ts +44 -0
  70. package/dist/connectors/builtin/triggers/default-cron-trigger.d.ts.map +1 -0
  71. package/dist/connectors/builtin/triggers/default-cron-trigger.js +31 -0
  72. package/dist/connectors/builtin/triggers/default-cron-trigger.js.map +1 -0
  73. package/dist/connectors/builtin/triggers/default-event-trigger.d.ts +32 -0
  74. package/dist/connectors/builtin/triggers/default-event-trigger.d.ts.map +1 -0
  75. package/dist/connectors/builtin/triggers/default-event-trigger.js +21 -0
  76. package/dist/connectors/builtin/triggers/default-event-trigger.js.map +1 -0
  77. package/dist/connectors/builtin/triggers/default-manual-trigger.d.ts +45 -0
  78. package/dist/connectors/builtin/triggers/default-manual-trigger.d.ts.map +1 -0
  79. package/dist/connectors/builtin/triggers/default-manual-trigger.js +51 -0
  80. package/dist/connectors/builtin/triggers/default-manual-trigger.js.map +1 -0
  81. package/dist/connectors/builtin/triggers/default-webhook-v2-trigger.d.ts +31 -0
  82. package/dist/connectors/builtin/triggers/default-webhook-v2-trigger.d.ts.map +1 -0
  83. package/dist/connectors/builtin/triggers/default-webhook-v2-trigger.js +40 -0
  84. package/dist/connectors/builtin/triggers/default-webhook-v2-trigger.js.map +1 -0
  85. package/dist/connectors/core/base-connector.d.ts +45 -0
  86. package/dist/connectors/core/base-connector.d.ts.map +1 -0
  87. package/dist/connectors/core/base-connector.js +3 -0
  88. package/dist/connectors/core/base-connector.js.map +1 -0
  89. package/dist/connectors/core/connector-registry.d.ts +130 -0
  90. package/dist/connectors/core/connector-registry.d.ts.map +1 -0
  91. package/dist/connectors/core/connector-registry.js +357 -0
  92. package/dist/connectors/core/connector-registry.js.map +1 -0
  93. package/dist/connectors/core/credentials.d.ts +104 -0
  94. package/dist/connectors/core/credentials.d.ts.map +1 -0
  95. package/dist/connectors/core/credentials.js +67 -0
  96. package/dist/connectors/core/credentials.js.map +1 -0
  97. package/dist/connectors/core/index.d.ts +7 -0
  98. package/dist/connectors/core/index.d.ts.map +1 -0
  99. package/dist/connectors/core/index.js +5 -0
  100. package/dist/connectors/core/index.js.map +1 -0
  101. package/dist/engine/available-context.d.ts +3 -4
  102. package/dist/engine/available-context.d.ts.map +1 -1
  103. package/dist/engine/available-context.js +17 -13
  104. package/dist/engine/available-context.js.map +1 -1
  105. package/dist/engine/config-validator.d.ts +13 -5
  106. package/dist/engine/config-validator.d.ts.map +1 -1
  107. package/dist/engine/config-validator.js +89 -11
  108. package/dist/engine/config-validator.js.map +1 -1
  109. package/dist/engine/credential-resolver.d.ts +42 -0
  110. package/dist/engine/credential-resolver.d.ts.map +1 -0
  111. package/dist/engine/credential-resolver.js +63 -0
  112. package/dist/engine/credential-resolver.js.map +1 -0
  113. package/dist/engine/workflow-executor.d.ts +4 -5
  114. package/dist/engine/workflow-executor.d.ts.map +1 -1
  115. package/dist/engine/workflow-executor.js +16 -38
  116. package/dist/engine/workflow-executor.js.map +1 -1
  117. package/dist/index.d.ts +43 -28
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +30 -15
  120. package/dist/index.js.map +1 -1
  121. package/dist/ingest/body.d.ts +18 -0
  122. package/dist/ingest/body.d.ts.map +1 -0
  123. package/dist/ingest/body.js +47 -0
  124. package/dist/ingest/body.js.map +1 -0
  125. package/dist/ingest/filter.d.ts +11 -0
  126. package/dist/ingest/filter.d.ts.map +1 -0
  127. package/dist/ingest/filter.js +23 -0
  128. package/dist/ingest/filter.js.map +1 -0
  129. package/dist/ingest/headers.d.ts +3 -0
  130. package/dist/ingest/headers.d.ts.map +1 -0
  131. package/dist/ingest/headers.js +11 -0
  132. package/dist/ingest/headers.js.map +1 -0
  133. package/dist/ingest/types.d.ts +50 -0
  134. package/dist/ingest/types.d.ts.map +1 -0
  135. package/dist/ingest/types.js +9 -0
  136. package/dist/ingest/types.js.map +1 -0
  137. package/dist/persistence/in-memory-adapter.d.ts +4 -8
  138. package/dist/persistence/in-memory-adapter.d.ts.map +1 -1
  139. package/dist/persistence/in-memory-adapter.js +8 -25
  140. package/dist/persistence/in-memory-adapter.js.map +1 -1
  141. package/dist/persistence/types.d.ts +5 -19
  142. package/dist/persistence/types.d.ts.map +1 -1
  143. package/dist/router/types.d.ts +31 -3
  144. package/dist/router/types.d.ts.map +1 -1
  145. package/dist/router/workflow-router.d.ts +4 -3
  146. package/dist/router/workflow-router.d.ts.map +1 -1
  147. package/dist/router/workflow-router.js +66 -40
  148. package/dist/router/workflow-router.js.map +1 -1
  149. package/dist/runtime/types.d.ts +6 -4
  150. package/dist/runtime/types.d.ts.map +1 -1
  151. package/dist/runtime/workflow-runtime.d.ts +43 -37
  152. package/dist/runtime/workflow-runtime.d.ts.map +1 -1
  153. package/dist/runtime/workflow-runtime.js +158 -133
  154. package/dist/runtime/workflow-runtime.js.map +1 -1
  155. package/dist/steps/base-step.d.ts +23 -0
  156. package/dist/steps/base-step.d.ts.map +1 -1
  157. package/dist/steps/base-step.js +22 -0
  158. package/dist/steps/base-step.js.map +1 -1
  159. package/dist/steps/step-descriptor.d.ts +52 -0
  160. package/dist/steps/step-descriptor.d.ts.map +1 -0
  161. package/dist/steps/step-descriptor.js +32 -0
  162. package/dist/steps/step-descriptor.js.map +1 -0
  163. package/dist/testing/authz-conformance.d.ts.map +1 -1
  164. package/dist/testing/authz-conformance.js +6 -7
  165. package/dist/testing/authz-conformance.js.map +1 -1
  166. package/dist/testing/index.d.ts +1 -0
  167. package/dist/testing/index.d.ts.map +1 -1
  168. package/dist/testing/index.js +1 -0
  169. package/dist/testing/index.js.map +1 -1
  170. package/dist/testing/mock-step-context.d.ts +1 -0
  171. package/dist/testing/mock-step-context.d.ts.map +1 -1
  172. package/dist/testing/mock-step-context.js +1 -0
  173. package/dist/testing/mock-step-context.js.map +1 -1
  174. package/dist/testing/test-connector.d.ts +40 -0
  175. package/dist/testing/test-connector.d.ts.map +1 -0
  176. package/dist/testing/test-connector.js +39 -0
  177. package/dist/testing/test-connector.js.map +1 -0
  178. package/dist/triggers/api-trigger.d.ts +15 -0
  179. package/dist/triggers/api-trigger.d.ts.map +1 -0
  180. package/dist/triggers/api-trigger.js +14 -0
  181. package/dist/triggers/api-trigger.js.map +1 -0
  182. package/dist/triggers/base-trigger.d.ts +29 -0
  183. package/dist/triggers/base-trigger.d.ts.map +1 -1
  184. package/dist/triggers/base-trigger.js +16 -0
  185. package/dist/triggers/base-trigger.js.map +1 -1
  186. package/dist/triggers/trigger-descriptor.d.ts +42 -0
  187. package/dist/triggers/trigger-descriptor.d.ts.map +1 -0
  188. package/dist/triggers/trigger-descriptor.js +29 -0
  189. package/dist/triggers/trigger-descriptor.js.map +1 -0
  190. package/dist/triggers/webhook-trigger.d.ts +31 -38
  191. package/dist/triggers/webhook-trigger.d.ts.map +1 -1
  192. package/dist/triggers/webhook-trigger.js +19 -6
  193. package/dist/triggers/webhook-trigger.js.map +1 -1
  194. package/dist/types/known-types.d.ts +0 -1
  195. package/dist/types/known-types.d.ts.map +1 -1
  196. package/dist/types/known-types.js +0 -1
  197. package/dist/types/known-types.js.map +1 -1
  198. package/dist/types/validation.d.ts +3 -1
  199. package/dist/types/validation.d.ts.map +1 -1
  200. package/dist/types/validation.js +2 -0
  201. package/dist/types/validation.js.map +1 -1
  202. package/dist/types/workflow-config.d.ts +23 -0
  203. package/dist/types/workflow-config.d.ts.map +1 -1
  204. package/dist/types/workflow-config.js +8 -0
  205. package/dist/types/workflow-config.js.map +1 -1
  206. package/dist/util/credential-slot-schema.d.ts +20 -0
  207. package/dist/util/credential-slot-schema.d.ts.map +1 -0
  208. package/dist/util/credential-slot-schema.js +30 -0
  209. package/dist/util/credential-slot-schema.js.map +1 -0
  210. package/package.json +1 -1
@@ -0,0 +1,39 @@
1
+ /**
2
+ * A throwaway connector for tests.
3
+ *
4
+ * `ConnectorRegistry` has no `registerStep` on purpose — a component may only
5
+ * enter the system as part of a connector, because every check the registry
6
+ * makes depends on knowing the owner. That is right in production and
7
+ * inconvenient in a test that wants one fake step, so this wraps loose
8
+ * components in a connector named `test`.
9
+ */
10
+ import { BaseConnector } from '../connectors/core/base-connector.js';
11
+ import { ConnectorRegistry } from '../connectors/core/connector-registry.js';
12
+ export class TestConnector extends BaseConnector {
13
+ id = 'test';
14
+ version = '1.0.0';
15
+ name = 'Test';
16
+ description = 'Components under test';
17
+ /** Whatever the components under test accept; empty unless a case sets it. */
18
+ credentials;
19
+ steps;
20
+ triggers;
21
+ constructor(components) {
22
+ super();
23
+ this.steps = components?.steps ?? [];
24
+ this.triggers = components?.triggers ?? [];
25
+ this.credentials = components?.credentials ?? [];
26
+ }
27
+ }
28
+ /**
29
+ * A registry holding these components, under one test connector.
30
+ *
31
+ * The built-ins (CODE, WAIT, LOOP, …) come with every `ConnectorRegistry`, so
32
+ * cases that drive a real control-flow step need nothing extra here.
33
+ */
34
+ export function testRegistry(components) {
35
+ const registry = new ConnectorRegistry();
36
+ registry.register(new TestConnector(components));
37
+ return registry;
38
+ }
39
+ //# sourceMappingURL=test-connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-connector.js","sourceRoot":"","sources":["../../src/testing/test-connector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAG7E,MAAM,OAAO,aAAc,SAAQ,aAAa;IAC5B,EAAE,GAAG,MAAM,CAAC;IACZ,OAAO,GAAG,OAAO,CAAC;IAClB,IAAI,GAAG,MAAM,CAAC;IACd,WAAW,GAAG,uBAAuB,CAAC;IACxD,8EAA8E;IAC5D,WAAW,CAAkC;IAC7C,KAAK,CAAqB;IAC1B,QAAQ,CAAwB;IAElD,YAAY,UAIX;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,UAAU,EAAE,QAAQ,IAAI,EAAE,CAAC;QAC3C,IAAI,CAAC,WAAW,GAAG,UAAU,EAAE,WAAW,IAAI,EAAE,CAAC;IACnD,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,UAI5B;IACC,MAAM,QAAQ,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;IACjD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { z } from 'zod';
2
+ import { ManualTrigger } from './manual-trigger.js';
3
+ /**
4
+ * API trigger — started by a client calling the workflow's API trigger route.
5
+ *
6
+ * The SDK does not authenticate that caller; a host that exposes the route
7
+ * guards it, for example with an API key. Like a manual trigger, the payload is
8
+ * described by the author's input schema.
9
+ *
10
+ * The API trigger route accepts only workflows whose trigger is an `ApiTrigger`,
11
+ * the same way the webhook route accepts only a `WebhookTrigger`.
12
+ */
13
+ export declare abstract class ApiTrigger<TConfig extends z.ZodTypeAny = z.ZodTypeAny> extends ManualTrigger<TConfig> {
14
+ }
15
+ //# sourceMappingURL=api-trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-trigger.d.ts","sourceRoot":"","sources":["../../src/triggers/api-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;;GASG;AACH,8BAAsB,UAAU,CAC9B,OAAO,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAC3C,SAAQ,aAAa,CAAC,OAAO,CAAC;CAAG"}
@@ -0,0 +1,14 @@
1
+ import { ManualTrigger } from './manual-trigger.js';
2
+ /**
3
+ * API trigger — started by a client calling the workflow's API trigger route.
4
+ *
5
+ * The SDK does not authenticate that caller; a host that exposes the route
6
+ * guards it, for example with an API key. Like a manual trigger, the payload is
7
+ * described by the author's input schema.
8
+ *
9
+ * The API trigger route accepts only workflows whose trigger is an `ApiTrigger`,
10
+ * the same way the webhook route accepts only a `WebhookTrigger`.
11
+ */
12
+ export class ApiTrigger extends ManualTrigger {
13
+ }
14
+ //# sourceMappingURL=api-trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-trigger.js","sourceRoot":"","sources":["../../src/triggers/api-trigger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;;;GASG;AACH,MAAM,OAAgB,UAEpB,SAAQ,aAAsB;CAAG"}
@@ -1,6 +1,19 @@
1
1
  import type { z } from 'zod';
2
2
  import type { TriggerType } from '../types/trigger-types.js';
3
3
  import type { TriggerCategory } from '../types/categories.js';
4
+ import type { CredentialSlot } from '../steps/base-step.js';
5
+ import type { CredentialRequirement } from '../connectors/core/credentials.js';
6
+ import type { ResolvedCredential } from '../common/credentials.js';
7
+ import type { ResourceAttributes } from '../authz/attributes.js';
8
+ /** What the engine hands a trigger's server-side methods. */
9
+ export interface TriggerExecutionContext {
10
+ /** Credentials the trigger's slots resolved to, keyed by slot name. */
11
+ readonly credentials: Readonly<Record<string, ResolvedCredential>>;
12
+ /** The tenant the workflow belongs to. */
13
+ readonly attributes: ResourceAttributes<'workflow'>;
14
+ /** Base URL the deployment is reachable at. Empty when unconfigured. */
15
+ readonly baseUrl: string;
16
+ }
4
17
  /**
5
18
  * Abstract base for all triggers.
6
19
  *
@@ -20,6 +33,22 @@ export declare abstract class BaseTrigger<TConfig extends z.ZodTypeAny> {
20
33
  abstract readonly outputSchema: z.ZodTypeAny;
21
34
  abstract readonly category: TriggerCategory;
22
35
  readonly icon?: string;
36
+ /**
37
+ * Which connector provides this trigger. Written by
38
+ * `ConnectorRegistry.register()`, never by the trigger — see BaseStep.
39
+ */
40
+ readonly connectorId?: string;
41
+ readonly connectorName?: string;
42
+ /**
43
+ * Config fields holding a credential name, resolved by the engine. Same
44
+ * contract as a step's slots.
45
+ */
46
+ readonly credentialSlots?: readonly CredentialSlot[];
47
+ /**
48
+ * Which credential types this trigger accepts. The registry checks each is
49
+ * declared by the trigger's own connector.
50
+ */
51
+ readonly credential?: CredentialRequirement;
23
52
  /** Whether this trigger requires scope-based filtering in the UI. */
24
53
  readonly requiresScopeFilter?: boolean;
25
54
  /** Fields used for scope filtering (e.g. channelIds, boardIds). */
@@ -1 +1 @@
1
- {"version":3,"file":"base-trigger.d.ts","sourceRoot":"","sources":["../../src/triggers/base-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,8BAAsB,WAAW,CAAC,OAAO,SAAS,CAAC,CAAC,UAAU;IAC5D,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,qEAAqE;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAEvC,mEAAmE;IACnE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAE/C,wDAAwD;IACxD,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IAI3C;;;OAGG;IACH,cAAc,CAAC,CACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;;OAGG;IACH,YAAY,CACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO;IAIV;;;OAGG;IACH,oBAAoB,CAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1B;;;;;;;;;;;OAWG;IACH,uBAAuB,CAAC,CACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAC3B"}
1
+ {"version":3,"file":"base-trigger.d.ts","sourceRoot":"","sources":["../../src/triggers/base-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,6DAA6D;AAC7D,MAAM,WAAW,uBAAuB;IACtC,uEAAuE;IACvE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACnE,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACpD,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;GAUG;AACH,8BAAsB,WAAW,CAAC,OAAO,SAAS,CAAC,CAAC,UAAU;IAC5D,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEhC;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAErD;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC;IAE5C,qEAAqE;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAEvC,mEAAmE;IACnE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAE/C,wDAAwD;IACxD,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IAI3C;;;OAGG;IACH,cAAc,CAAC,CACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;;OAGG;IACH,YAAY,CACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO;IAIV;;;OAGG;IACH,oBAAoB,CAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1B;;;;;;;;;;;OAWG;IACH,uBAAuB,CAAC,CACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAC3B"}
@@ -11,6 +11,22 @@
11
11
  */
12
12
  export class BaseTrigger {
13
13
  icon;
14
+ /**
15
+ * Which connector provides this trigger. Written by
16
+ * `ConnectorRegistry.register()`, never by the trigger — see BaseStep.
17
+ */
18
+ connectorId;
19
+ connectorName;
20
+ /**
21
+ * Config fields holding a credential name, resolved by the engine. Same
22
+ * contract as a step's slots.
23
+ */
24
+ credentialSlots;
25
+ /**
26
+ * Which credential types this trigger accepts. The registry checks each is
27
+ * declared by the trigger's own connector.
28
+ */
29
+ credential;
14
30
  /** Whether this trigger requires scope-based filtering in the UI. */
15
31
  requiresScopeFilter;
16
32
  /** Fields used for scope filtering (e.g. channelIds, boardIds). */
@@ -1 +1 @@
1
- {"version":3,"file":"base-trigger.js","sourceRoot":"","sources":["../../src/triggers/base-trigger.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,WAAW;IAOtB,IAAI,CAAU;IAEvB,qEAAqE;IAC5D,mBAAmB,CAAW;IAEvC,mEAAmE;IAC1D,iBAAiB,CAAqB;IAE/C,wDAAwD;IACxD,QAAQ,CAAC,MAAe;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAqB,CAAC;IAC7D,CAAC;IAUD;;;OAGG;IACH,YAAY,CACV,OAAgC,EAChC,QAAiC;QAEjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,oBAAoB,CAClB,UAAmC;QAEnC,OAAO,UAAU,CAAC;IACpB,CAAC;CAiBF"}
1
+ {"version":3,"file":"base-trigger.js","sourceRoot":"","sources":["../../src/triggers/base-trigger.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,WAAW;IAOtB,IAAI,CAAU;IAEvB;;;OAGG;IACM,WAAW,CAAU;IACrB,aAAa,CAAU;IAEhC;;;OAGG;IACM,eAAe,CAA6B;IAErD;;;OAGG;IACM,UAAU,CAAyB;IAE5C,qEAAqE;IAC5D,mBAAmB,CAAW;IAEvC,mEAAmE;IAC1D,iBAAiB,CAAqB;IAE/C,wDAAwD;IACxD,QAAQ,CAAC,MAAe;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAqB,CAAC;IAC7D,CAAC;IAUD;;;OAGG;IACH,YAAY,CACV,OAAgC,EAChC,QAAiC;QAEjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,oBAAoB,CAClB,UAAmC;QAEnC,OAAO,UAAU,CAAC;IACpB,CAAC;CAiBF"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * How a trigger describes itself to the builder — the `StepDescriptor`
3
+ * counterpart, moved out of the deleted `TriggerRegistry` for the same reason:
4
+ * connectors hold triggers now, but the palette still needs them described.
5
+ */
6
+ import type { z } from 'zod';
7
+ import type { TriggerType } from '../types/trigger-types.js';
8
+ import type { TriggerCategory } from '../types/categories.js';
9
+ import { BaseTrigger } from './base-trigger.js';
10
+ import type { CredentialSlot } from '../steps/base-step.js';
11
+ import type { CredentialTypeRef } from '../common/credentials.js';
12
+ type AnyTrigger = BaseTrigger<z.ZodTypeAny>;
13
+ export interface TriggerSummary {
14
+ type: TriggerType;
15
+ name: string;
16
+ description: string;
17
+ category: TriggerCategory;
18
+ icon?: string;
19
+ /** The connector that provides this trigger. Stamped at registration. */
20
+ connectorId?: string;
21
+ connectorName?: string;
22
+ }
23
+ export interface TriggerDescriptor extends TriggerSummary {
24
+ /** JSON Schema for the trigger's config — generated from the Zod schema. */
25
+ configSchema: Record<string, unknown>;
26
+ /** JSON Schema for the trigger's output — generated from the Zod schema. */
27
+ outputSchema: Record<string, unknown>;
28
+ /** Whether this trigger requires scope-based filtering in the UI. */
29
+ requiresScopeFilter: boolean;
30
+ /** Fields used for scope filtering (e.g. channelIds, boardIds). */
31
+ scopeFilterFields: readonly string[];
32
+ /** Credential slots this trigger declares. Empty array if none. */
33
+ credentialSlots: readonly CredentialSlot[];
34
+ /** Credential types the trigger accepts. Empty means any type. */
35
+ credential: readonly CredentialTypeRef[];
36
+ /** True for a webhook trigger, which an external provider calls. */
37
+ webhook: boolean;
38
+ }
39
+ export declare function buildTriggerSummary(t: AnyTrigger): TriggerSummary;
40
+ export declare function buildTriggerDescriptor(t: AnyTrigger): TriggerDescriptor;
41
+ export {};
42
+ //# sourceMappingURL=trigger-descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-descriptor.d.ts","sourceRoot":"","sources":["../../src/triggers/trigger-descriptor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAIlE,KAAK,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AAI5C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,qEAAqE;IACrE,mBAAmB,EAAE,OAAO,CAAC;IAC7B,mEAAmE;IACnE,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,mEAAmE;IACnE,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,kEAAkE;IAClE,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACzC,oEAAoE;IACpE,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,UAAU,GAAG,cAAc,CAUjE;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,UAAU,GAAG,iBAAiB,CAWvE"}
@@ -0,0 +1,29 @@
1
+ import { BaseTrigger } from './base-trigger.js';
2
+ import { WebhookTrigger } from './webhook-trigger.js';
3
+ import { zodToJsonSchemaRecord } from '../util/schema-convert.js';
4
+ import { credentialTypeRefs } from '../util/credential-slot-schema.js';
5
+ // ─── Builders ───
6
+ export function buildTriggerSummary(t) {
7
+ return {
8
+ type: t.type,
9
+ name: t.name,
10
+ description: t.description,
11
+ category: t.category,
12
+ ...(t.icon !== undefined ? { icon: t.icon } : {}),
13
+ ...(t.connectorId !== undefined ? { connectorId: t.connectorId } : {}),
14
+ ...(t.connectorName !== undefined ? { connectorName: t.connectorName } : {}),
15
+ };
16
+ }
17
+ export function buildTriggerDescriptor(t) {
18
+ return {
19
+ ...buildTriggerSummary(t),
20
+ configSchema: t.decorateConfigSchema(zodToJsonSchemaRecord(t.configSchema)),
21
+ outputSchema: zodToJsonSchemaRecord(t.outputSchema),
22
+ requiresScopeFilter: t.requiresScopeFilter ?? false,
23
+ scopeFilterFields: t.scopeFilterFields ?? [],
24
+ credentialSlots: t.credentialSlots ?? [],
25
+ credential: credentialTypeRefs(t.credential),
26
+ webhook: t instanceof WebhookTrigger,
27
+ };
28
+ }
29
+ //# sourceMappingURL=trigger-descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-descriptor.js","sourceRoot":"","sources":["../../src/triggers/trigger-descriptor.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAoCvE,mBAAmB;AAEnB,MAAM,UAAU,mBAAmB,CAAC,CAAa;IAC/C,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,CAAC,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,CAAa;IAClD,OAAO;QACL,GAAG,mBAAmB,CAAC,CAAC,CAAC;QACzB,YAAY,EAAE,CAAC,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC3E,YAAY,EAAE,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC;QACnD,mBAAmB,EAAE,CAAC,CAAC,mBAAmB,IAAI,KAAK;QACnD,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,IAAI,EAAE;QAC5C,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,EAAE;QACxC,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC;QAC5C,OAAO,EAAE,CAAC,YAAY,cAAc;KACrC,CAAC;AACJ,CAAC"}
@@ -1,50 +1,43 @@
1
1
  import type { z } from 'zod';
2
2
  import { BaseTrigger } from './base-trigger.js';
3
- export interface WebhookRequest {
4
- method: string;
5
- headers: Record<string, string | string[] | undefined>;
6
- body: unknown;
7
- query: Record<string, string | string[] | undefined>;
8
- }
9
- export interface WebhookResponse {
10
- status: number;
11
- headers?: Record<string, string>;
12
- body?: unknown;
13
- }
14
- export interface WebhookHandleResult {
15
- /** Data to pass into the workflow as trigger context. */
16
- triggerData: Record<string, unknown>;
17
- /** HTTP response to return to the webhook caller. */
18
- httpResponse: WebhookResponse;
19
- }
20
- export interface WebhookActivationContext {
21
- /** The full URL the webhook will be reachable at. */
22
- webhookUrl: string;
23
- credentials: Record<string, never>;
24
- }
3
+ import type { TriggerExecutionContext } from './base-trigger.js';
4
+ import type { InboundHttpRequest, RawInboundRequest, Translation } from '../ingest/types.js';
25
5
  /**
26
- * Webhook trigger — fires when an external HTTP request hits the webhook URL.
6
+ * Webhook trigger — fires when an external service POSTs to
7
+ * `<baseUrl>/webhooks/<workflowId>`.
8
+ *
9
+ * The author registers that URL with the provider by hand. On each request the
10
+ * engine:
27
11
  *
28
- * On activation, the runtime generates a unique webhook path and calls
29
- * `onActivate()` so the trigger can register it with the external service.
30
- * On incoming requests, `handleRequest()` validates the request and
31
- * returns the trigger data + HTTP response.
12
+ * 1. finds the workflow and checks it is active,
13
+ * 2. resolves the trigger's credentials, rejecting the request if one is
14
+ * missing, revoked, or of a type the trigger does not accept,
15
+ * 3. calls {@link verify} with the exact bytes and those credentials,
16
+ * 4. parses the body,
17
+ *
18
+ * and only then calls {@link handleRequest}. Each event it returns must pass
19
+ * the workflow's trigger filter to become a run.
20
+ *
21
+ * How a request is verified belongs to the connector: its provider's signing
22
+ * scheme, its own utilities. The engine's part is that verification always
23
+ * runs first and receives the right credentials. The URL carries no secret, so
24
+ * an implementation that accepts everything leaves the workflow open to anyone
25
+ * who learns its id.
32
26
  */
33
27
  export declare abstract class WebhookTrigger<TConfig extends z.ZodTypeAny = z.ZodTypeAny> extends BaseTrigger<TConfig> {
34
28
  /**
35
- * Process an incoming webhook request.
36
- * Return the data to inject as trigger context and the HTTP response.
37
- */
38
- abstract handleRequest(request: WebhookRequest, config: z.infer<TConfig>): Promise<WebhookHandleResult>;
39
- /**
40
- * Called when the workflow is activated. Use to register the webhook URL
41
- * with the external service (e.g. Stripe, GitHub).
29
+ * Is this request really from the provider? Return false, or throw, to reject
30
+ * it with 401. Runs before the body is parsed.
31
+ *
32
+ * Read a secret with `credentialValues(ctx.credentials, slot, 'secret')`.
42
33
  */
43
- onActivate?(config: z.infer<TConfig>, ctx: WebhookActivationContext): Promise<void>;
34
+ abstract verify(request: InboundHttpRequest, config: z.infer<TConfig>, ctx: TriggerExecutionContext): Promise<boolean>;
44
35
  /**
45
- * Called when the workflow is deactivated. Use to unregister from the
46
- * external service.
36
+ * Turn a verified request into events, and say what to reply.
37
+ *
38
+ * Should be pure: no network calls. Enrichment that needs the provider's API
39
+ * belongs in `hydratePayload`, which runs inside the execution.
47
40
  */
48
- onDeactivate?(config: z.infer<TConfig>, ctx: WebhookActivationContext): Promise<void>;
41
+ abstract handleRequest(request: RawInboundRequest, config: z.infer<TConfig>, ctx: TriggerExecutionContext): Promise<Translation>;
49
42
  }
50
43
  //# sourceMappingURL=webhook-trigger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-trigger.d.ts","sourceRoot":"","sources":["../../src/triggers/webhook-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACvD,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,qDAAqD;IACrD,YAAY,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,qDAAqD;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CACpC;AAID;;;;;;;GAOG;AACH,8BAAsB,cAAc,CAClC,OAAO,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAC3C,SAAQ,WAAW,CAAC,OAAO,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,aAAa,CACpB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GACvB,OAAO,CAAC,mBAAmB,CAAC;IAE/B;;;OAGG;IACH,UAAU,CAAC,CACT,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EACxB,GAAG,EAAE,wBAAwB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAEhB;;;OAGG;IACH,YAAY,CAAC,CACX,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EACxB,GAAG,EAAE,wBAAwB,GAC5B,OAAO,CAAC,IAAI,CAAC;CACjB"}
1
+ {"version":3,"file":"webhook-trigger.d.ts","sourceRoot":"","sources":["../../src/triggers/webhook-trigger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE7F;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,8BAAsB,cAAc,CAClC,OAAO,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAC3C,SAAQ,WAAW,CAAC,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CACb,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EACxB,GAAG,EAAE,uBAAuB,GAC3B,OAAO,CAAC,OAAO,CAAC;IAEnB;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CACpB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EACxB,GAAG,EAAE,uBAAuB,GAC3B,OAAO,CAAC,WAAW,CAAC;CACxB"}
@@ -1,12 +1,25 @@
1
1
  import { BaseTrigger } from './base-trigger.js';
2
- // ─── WebhookTrigger ───
3
2
  /**
4
- * Webhook trigger — fires when an external HTTP request hits the webhook URL.
3
+ * Webhook trigger — fires when an external service POSTs to
4
+ * `<baseUrl>/webhooks/<workflowId>`.
5
5
  *
6
- * On activation, the runtime generates a unique webhook path and calls
7
- * `onActivate()` so the trigger can register it with the external service.
8
- * On incoming requests, `handleRequest()` validates the request and
9
- * returns the trigger data + HTTP response.
6
+ * The author registers that URL with the provider by hand. On each request the
7
+ * engine:
8
+ *
9
+ * 1. finds the workflow and checks it is active,
10
+ * 2. resolves the trigger's credentials, rejecting the request if one is
11
+ * missing, revoked, or of a type the trigger does not accept,
12
+ * 3. calls {@link verify} with the exact bytes and those credentials,
13
+ * 4. parses the body,
14
+ *
15
+ * and only then calls {@link handleRequest}. Each event it returns must pass
16
+ * the workflow's trigger filter to become a run.
17
+ *
18
+ * How a request is verified belongs to the connector: its provider's signing
19
+ * scheme, its own utilities. The engine's part is that verification always
20
+ * runs first and receives the right credentials. The URL carries no secret, so
21
+ * an implementation that accepts everything leaves the workflow open to anyone
22
+ * who learns its id.
10
23
  */
11
24
  export class WebhookTrigger extends BaseTrigger {
12
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-trigger.js","sourceRoot":"","sources":["../../src/triggers/webhook-trigger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA8BhD,yBAAyB;AAEzB;;;;;;;GAOG;AACH,MAAM,OAAgB,cAEpB,SAAQ,WAAoB;CA2B7B"}
1
+ {"version":3,"file":"webhook-trigger.js","sourceRoot":"","sources":["../../src/triggers/webhook-trigger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAgB,cAEpB,SAAQ,WAAoB;CAwB7B"}
@@ -26,7 +26,6 @@ export declare const ControlFlowStepTypeSchema: z.ZodEnum<[BuiltinStepType.CONDI
26
26
  */
27
27
  export declare enum BuiltinTriggerType {
28
28
  EVENT = "EVENT",
29
- WEBHOOK = "WEBHOOK",
30
29
  CRON = "CRON",
31
30
  MANUAL = "MANUAL",
32
31
  WEBHOOK_V2 = "WEBHOOK_V2"
@@ -1 +1 @@
1
- {"version":3,"file":"known-types.d.ts","sourceRoot":"","sources":["../../src/types/known-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;GAGG;AACH,oBAAY,eAAe;IAEzB,WAAW,gBAAgB;IAC3B,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,GAAG,QAAQ;IAEX,IAAI,SAAS;IACb,IAAI,SAAS;IACb,YAAY,iBAAiB;IAC7B,KAAK,UAAU;CAChB;AAED,eAAO,MAAM,qBAAqB,yCAAgC,CAAC;AAInE,QAAA,MAAM,wBAAwB,qIAMpB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,yGAAyG;AACzG,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAEvD,CAAC;AAEF,eAAO,MAAM,yBAAyB,uIAMpC,CAAC;AAIH;;;GAGG;AACH,oBAAY,kBAAkB;IAC5B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,UAAU,eAAe;CAC1B;AAED,eAAO,MAAM,wBAAwB,4CAAmC,CAAC"}
1
+ {"version":3,"file":"known-types.d.ts","sourceRoot":"","sources":["../../src/types/known-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;GAGG;AACH,oBAAY,eAAe;IAEzB,WAAW,gBAAgB;IAC3B,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,GAAG,QAAQ;IAEX,IAAI,SAAS;IACb,IAAI,SAAS;IACb,YAAY,iBAAiB;IAC7B,KAAK,UAAU;CAChB;AAED,eAAO,MAAM,qBAAqB,yCAAgC,CAAC;AAInE,QAAA,MAAM,wBAAwB,qIAMpB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,yGAAyG;AACzG,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAEvD,CAAC;AAEF,eAAO,MAAM,yBAAyB,uIAMpC,CAAC;AAIH;;;GAGG;AACH,oBAAY,kBAAkB;IAC5B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,UAAU,eAAe;CAC1B;AAED,eAAO,MAAM,wBAAwB,4CAAmC,CAAC"}
@@ -44,7 +44,6 @@ export const ControlFlowStepTypeSchema = z.enum([
44
44
  export var BuiltinTriggerType;
45
45
  (function (BuiltinTriggerType) {
46
46
  BuiltinTriggerType["EVENT"] = "EVENT";
47
- BuiltinTriggerType["WEBHOOK"] = "WEBHOOK";
48
47
  BuiltinTriggerType["CRON"] = "CRON";
49
48
  BuiltinTriggerType["MANUAL"] = "MANUAL";
50
49
  BuiltinTriggerType["WEBHOOK_V2"] = "WEBHOOK_V2";
@@ -1 +1 @@
1
- {"version":3,"file":"known-types.js","sourceRoot":"","sources":["../../src/types/known-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8BAA8B;AAE9B;;;GAGG;AACH,MAAM,CAAN,IAAY,eAYX;AAZD,WAAY,eAAe;IACzB,eAAe;IACf,8CAA2B,CAAA;IAC3B,oCAAiB,CAAA;IACjB,gCAAa,CAAA;IACb,wCAAqB,CAAA;IACrB,8BAAW,CAAA;IACX,SAAS;IACT,gCAAa,CAAA;IACb,gCAAa,CAAA;IACb,gDAA6B,CAAA;IAC7B,kCAAe,CAAA;AACjB,CAAC,EAZW,eAAe,KAAf,eAAe,QAY1B;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAEnE,8BAA8B;AAE9B,MAAM,wBAAwB,GAAG;IAC/B,eAAe,CAAC,WAAW;IAC3B,eAAe,CAAC,MAAM;IACtB,eAAe,CAAC,IAAI;IACpB,eAAe,CAAC,QAAQ;IACxB,eAAe,CAAC,GAAG;CACX,CAAC;AAIX,yGAAyG;AACzG,MAAM,CAAC,MAAM,uBAAuB,GAAwB,IAAI,GAAG,CACjE,wBAAwB,CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9C,eAAe,CAAC,WAAW;IAC3B,eAAe,CAAC,MAAM;IACtB,eAAe,CAAC,IAAI;IACpB,eAAe,CAAC,QAAQ;IACxB,eAAe,CAAC,GAAG;CACpB,CAAC,CAAC;AAEH,iCAAiC;AAEjC;;;GAGG;AACH,MAAM,CAAN,IAAY,kBAMX;AAND,WAAY,kBAAkB;IAC5B,qCAAe,CAAA;IACf,yCAAmB,CAAA;IACnB,mCAAa,CAAA;IACb,uCAAiB,CAAA;IACjB,+CAAyB,CAAA;AAC3B,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,QAM7B;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"known-types.js","sourceRoot":"","sources":["../../src/types/known-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8BAA8B;AAE9B;;;GAGG;AACH,MAAM,CAAN,IAAY,eAYX;AAZD,WAAY,eAAe;IACzB,eAAe;IACf,8CAA2B,CAAA;IAC3B,oCAAiB,CAAA;IACjB,gCAAa,CAAA;IACb,wCAAqB,CAAA;IACrB,8BAAW,CAAA;IACX,SAAS;IACT,gCAAa,CAAA;IACb,gCAAa,CAAA;IACb,gDAA6B,CAAA;IAC7B,kCAAe,CAAA;AACjB,CAAC,EAZW,eAAe,KAAf,eAAe,QAY1B;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAEnE,8BAA8B;AAE9B,MAAM,wBAAwB,GAAG;IAC/B,eAAe,CAAC,WAAW;IAC3B,eAAe,CAAC,MAAM;IACtB,eAAe,CAAC,IAAI;IACpB,eAAe,CAAC,QAAQ;IACxB,eAAe,CAAC,GAAG;CACX,CAAC;AAIX,yGAAyG;AACzG,MAAM,CAAC,MAAM,uBAAuB,GAAwB,IAAI,GAAG,CACjE,wBAAwB,CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9C,eAAe,CAAC,WAAW;IAC3B,eAAe,CAAC,MAAM;IACtB,eAAe,CAAC,IAAI;IACpB,eAAe,CAAC,QAAQ;IACxB,eAAe,CAAC,GAAG;CACpB,CAAC,CAAC;AAEH,iCAAiC;AAEjC;;;GAGG;AACH,MAAM,CAAN,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,qCAAe,CAAA;IACf,mCAAa,CAAA;IACb,uCAAiB,CAAA;IACjB,+CAAyB,CAAA;AAC3B,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,QAK7B;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC"}
@@ -4,7 +4,9 @@ export declare enum ValidationIssueCode {
4
4
  UNKNOWN_REFERENCE = "unknownReference",
5
5
  FORWARD_REFERENCE = "forwardReference",
6
6
  TYPE_MISMATCH = "typeMismatch",
7
- DUPLICATE_STEP_ID = "duplicateStepId"
7
+ DUPLICATE_STEP_ID = "duplicateStepId",
8
+ MISSING_CREDENTIAL = "missingCredential",
9
+ INVALID_FILTER = "invalidFilter"
8
10
  }
9
11
  export declare const ValidationIssueCodeSchema: z.ZodNativeEnum<typeof ValidationIssueCode>;
10
12
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/types/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,oBAAY,mBAAmB;IAC7B,KAAK,UAAU;IACf,iBAAiB,qBAAqB;IACtC,iBAAiB,qBAAqB;IACtC,aAAa,iBAAiB;IAC9B,iBAAiB,oBAAoB;CACtC;AAED,eAAO,MAAM,yBAAyB,6CAAoC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qHAAqH;IACrH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,uBAAuB,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/types/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,oBAAY,mBAAmB;IAC7B,KAAK,UAAU;IACf,iBAAiB,qBAAqB;IACtC,iBAAiB,qBAAqB;IACtC,aAAa,iBAAiB;IAC9B,iBAAiB,oBAAoB;IACrC,kBAAkB,sBAAsB;IACxC,cAAc,kBAAkB;CACjC;AAED,eAAO,MAAM,yBAAyB,6CAAoC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qHAAqH;IACrH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,uBAAuB,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B"}
@@ -6,6 +6,8 @@ export var ValidationIssueCode;
6
6
  ValidationIssueCode["FORWARD_REFERENCE"] = "forwardReference";
7
7
  ValidationIssueCode["TYPE_MISMATCH"] = "typeMismatch";
8
8
  ValidationIssueCode["DUPLICATE_STEP_ID"] = "duplicateStepId";
9
+ ValidationIssueCode["MISSING_CREDENTIAL"] = "missingCredential";
10
+ ValidationIssueCode["INVALID_FILTER"] = "invalidFilter";
9
11
  })(ValidationIssueCode || (ValidationIssueCode = {}));
10
12
  export const ValidationIssueCodeSchema = z.nativeEnum(ValidationIssueCode);
11
13
  //# sourceMappingURL=validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/types/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAN,IAAY,mBAMX;AAND,WAAY,mBAAmB;IAC7B,sCAAe,CAAA;IACf,6DAAsC,CAAA;IACtC,6DAAsC,CAAA;IACtC,qDAA8B,CAAA;IAC9B,4DAAqC,CAAA;AACvC,CAAC,EANW,mBAAmB,KAAnB,mBAAmB,QAM9B;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/types/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAN,IAAY,mBAQX;AARD,WAAY,mBAAmB;IAC7B,sCAAe,CAAA;IACf,6DAAsC,CAAA;IACtC,6DAAsC,CAAA;IACtC,qDAA8B,CAAA;IAC9B,4DAAqC,CAAA;IACrC,+DAAwC,CAAA;IACxC,uDAAgC,CAAA;AAClC,CAAC,EARW,mBAAmB,KAAnB,mBAAmB,QAQ9B;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC"}
@@ -178,6 +178,12 @@ export interface WorkflowConfig {
178
178
  trigger: {
179
179
  type: TriggerType;
180
180
  config: Record<string, unknown>;
181
+ /**
182
+ * Which arriving events start a run. Separate from `config` because it has a
183
+ * different lifecycle: config is what the trigger is connected to, the filter
184
+ * is which of its events the workflow wants. See {@link TriggerFilter}.
185
+ */
186
+ filter?: TriggerFilter;
181
187
  };
182
188
  steps: WorkflowStepConfig[];
183
189
  settings?: WorkflowSettings;
@@ -193,6 +199,23 @@ export interface WorkflowConfig {
193
199
  */
194
200
  variables?: WorkflowVariable[];
195
201
  }
202
+ /**
203
+ * An author-configured condition on the trigger's events, evaluated by the
204
+ * engine before a run is created. An event that fails it leaves no trace.
205
+ */
206
+ export interface TriggerFilter {
207
+ /**
208
+ * The same condition tree the Conditional step uses. Variables may reference
209
+ * `{{trigger.*}}` and `{{vars.*}}` only — nothing else exists before a run.
210
+ */
211
+ conditions?: Condition;
212
+ }
213
+ export declare const TriggerFilterSchema: z.ZodType<TriggerFilter>;
214
+ /**
215
+ * The scope id that asks for the context a trigger filter can see — the trigger
216
+ * output and variables, no steps. Pass it wherever an `atStepId` is expected.
217
+ */
218
+ export declare const TRIGGER_FILTER_SCOPE = "$trigger";
196
219
  /**
197
220
  * Read a dotted path from a nested object.
198
221
  * `readDottedPath({ a: { b: 1 } }, 'a.b')` → `1`
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-config.d.ts","sourceRoot":"","sources":["../../src/types/workflow-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-config.d.ts","sourceRoot":"","sources":["../../src/types/workflow-config.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,14 @@ export const WorkflowSettingsSchema = z.object({
50
50
  })
51
51
  .optional(),
52
52
  });
53
+ export const TriggerFilterSchema = z
54
+ .object({ conditions: ConditionSchema.optional() })
55
+ .strict();
56
+ /**
57
+ * The scope id that asks for the context a trigger filter can see — the trigger
58
+ * output and variables, no steps. Pass it wherever an `atStepId` is expected.
59
+ */
60
+ export const TRIGGER_FILTER_SCOPE = '$trigger';
53
61
  // ─── Utility ───
54
62
  /**
55
63
  * Read a dotted path from a nested object.
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-config.js","sourceRoot":"","sources":["../../src/types/workflow-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-config.js","sourceRoot":"","sources":["../../src/types/workflow-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Mark a component's credential fields in its config JSON Schema.
3
+ *
4
+ * A component calls this from its own `decorateConfigSchema`, so the component
5
+ * decides which fields hold credentials, what they are called, how deeply they
6
+ * are nested, and how many there are. The framework never marks fields itself.
7
+ */
8
+ import type { CredentialRequirement } from '../connectors/core/credentials.js';
9
+ import type { CredentialTypeRef } from '../common/credentials.js';
10
+ /** The JSON Schema `format` the builder renders as a credential picker. */
11
+ export declare const CREDENTIAL_NAME_FORMAT = "credential-name";
12
+ /**
13
+ * A field's JSON Schema, marked as a credential picker limited to the accepted types.
14
+ *
15
+ * props['credentialName'] = markCredentialField(props['credentialName'], this.credential);
16
+ */
17
+ export declare function markCredentialField(fieldSchema: Record<string, unknown>, accepted: CredentialRequirement | undefined): Record<string, unknown>;
18
+ /** The accepted types, as the UI needs them. */
19
+ export declare function credentialTypeRefs(accepted: CredentialRequirement | undefined): CredentialTypeRef[];
20
+ //# sourceMappingURL=credential-slot-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-slot-schema.d.ts","sourceRoot":"","sources":["../../src/util/credential-slot-schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,oBAAoB,CAAC;AAExD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,QAAQ,EAAE,qBAAqB,GAAG,SAAS,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOzB;AAED,gDAAgD;AAChD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,SAAS,GAAG,iBAAiB,EAAE,CAKnG"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Mark a component's credential fields in its config JSON Schema.
3
+ *
4
+ * A component calls this from its own `decorateConfigSchema`, so the component
5
+ * decides which fields hold credentials, what they are called, how deeply they
6
+ * are nested, and how many there are. The framework never marks fields itself.
7
+ */
8
+ /** The JSON Schema `format` the builder renders as a credential picker. */
9
+ export const CREDENTIAL_NAME_FORMAT = 'credential-name';
10
+ /**
11
+ * A field's JSON Schema, marked as a credential picker limited to the accepted types.
12
+ *
13
+ * props['credentialName'] = markCredentialField(props['credentialName'], this.credential);
14
+ */
15
+ export function markCredentialField(fieldSchema, accepted) {
16
+ const credentialTypes = (accepted ?? []).map((definition) => definition.credType);
17
+ return {
18
+ ...fieldSchema,
19
+ format: CREDENTIAL_NAME_FORMAT,
20
+ ...(credentialTypes.length > 0 ? { credentialTypes } : {}),
21
+ };
22
+ }
23
+ /** The accepted types, as the UI needs them. */
24
+ export function credentialTypeRefs(accepted) {
25
+ return (accepted ?? []).map((definition) => ({
26
+ credType: definition.credType,
27
+ label: definition.label,
28
+ }));
29
+ }
30
+ //# sourceMappingURL=credential-slot-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-slot-schema.js","sourceRoot":"","sources":["../../src/util/credential-slot-schema.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC;AAExD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,WAAoC,EACpC,QAA2C;IAE3C,MAAM,eAAe,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClF,OAAO;QACL,GAAG,WAAW;QACd,MAAM,EAAE,sBAAsB;QAC9B,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,kBAAkB,CAAC,QAA2C;IAC5E,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC3C,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,KAAK,EAAE,UAAU,CAAC,KAAK;KACxB,CAAC,CAAC,CAAC;AACN,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyne/workflow-sdk",
3
- "version": "3.2.37",
3
+ "version": "3.2.38",
4
4
  "description": "Workflow engine SDK \u2014 steps, triggers, executor, agents, and a framework-agnostic HTTP router.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {