@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,40 @@
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 type { AnyStep, AnyTrigger } from '../connectors/core/base-connector.js';
12
+ import { ConnectorRegistry } from '../connectors/core/connector-registry.js';
13
+ import type { CredentialDefinition } from '../connectors/core/credentials.js';
14
+ export declare class TestConnector extends BaseConnector {
15
+ readonly id = "test";
16
+ readonly version = "1.0.0";
17
+ readonly name = "Test";
18
+ readonly description = "Components under test";
19
+ /** Whatever the components under test accept; empty unless a case sets it. */
20
+ readonly credentials: readonly CredentialDefinition[];
21
+ readonly steps: readonly AnyStep[];
22
+ readonly triggers: readonly AnyTrigger[];
23
+ constructor(components?: {
24
+ steps?: readonly AnyStep[];
25
+ triggers?: readonly AnyTrigger[];
26
+ credentials?: readonly CredentialDefinition[];
27
+ });
28
+ }
29
+ /**
30
+ * A registry holding these components, under one test connector.
31
+ *
32
+ * The built-ins (CODE, WAIT, LOOP, …) come with every `ConnectorRegistry`, so
33
+ * cases that drive a real control-flow step need nothing extra here.
34
+ */
35
+ export declare function testRegistry(components?: {
36
+ steps?: readonly AnyStep[];
37
+ triggers?: readonly AnyTrigger[];
38
+ credentials?: readonly CredentialDefinition[];
39
+ }): ConnectorRegistry;
40
+ //# sourceMappingURL=test-connector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-connector.d.ts","sourceRoot":"","sources":["../../src/testing/test-connector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,qBAAa,aAAc,SAAQ,aAAa;IAC9C,SAAkB,EAAE,UAAU;IAC9B,SAAkB,OAAO,WAAW;IACpC,SAAkB,IAAI,UAAU;IAChC,SAAkB,WAAW,2BAA2B;IACxD,8EAA8E;IAC9E,SAAkB,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/D,SAAkB,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAC5C,SAAkB,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAC;gBAEtC,UAAU,CAAC,EAAE;QACvB,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;QAC3B,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;QACjC,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;KAC/C;CAMF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,UAAU,CAAC,EAAE;IACxC,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC/C,GAAG,iBAAiB,CAIpB"}
@@ -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,23 @@ 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
+ readonly connectorIcon?: string;
43
+ /**
44
+ * Config fields holding a credential name, resolved by the engine. Same
45
+ * contract as a step's slots.
46
+ */
47
+ readonly credentialSlots?: readonly CredentialSlot[];
48
+ /**
49
+ * Which credential types this trigger accepts. The registry checks each is
50
+ * declared by the trigger's own connector.
51
+ */
52
+ readonly credential?: CredentialRequirement;
23
53
  /** Whether this trigger requires scope-based filtering in the UI. */
24
54
  readonly requiresScopeFilter?: boolean;
25
55
  /** 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;IAChC,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,23 @@
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
+ connectorIcon;
21
+ /**
22
+ * Config fields holding a credential name, resolved by the engine. Same
23
+ * contract as a step's slots.
24
+ */
25
+ credentialSlots;
26
+ /**
27
+ * Which credential types this trigger accepts. The registry checks each is
28
+ * declared by the trigger's own connector.
29
+ */
30
+ credential;
14
31
  /** Whether this trigger requires scope-based filtering in the UI. */
15
32
  requiresScopeFilter;
16
33
  /** 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;IACvB,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,44 @@
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
+ /** Its icon name, for the palette's connector list. Absent when the connector sets none. */
23
+ connectorIcon?: string;
24
+ }
25
+ export interface TriggerDescriptor extends TriggerSummary {
26
+ /** JSON Schema for the trigger's config — generated from the Zod schema. */
27
+ configSchema: Record<string, unknown>;
28
+ /** JSON Schema for the trigger's output — generated from the Zod schema. */
29
+ outputSchema: Record<string, unknown>;
30
+ /** Whether this trigger requires scope-based filtering in the UI. */
31
+ requiresScopeFilter: boolean;
32
+ /** Fields used for scope filtering (e.g. channelIds, boardIds). */
33
+ scopeFilterFields: readonly string[];
34
+ /** Credential slots this trigger declares. Empty array if none. */
35
+ credentialSlots: readonly CredentialSlot[];
36
+ /** Credential types the trigger accepts. Empty means any type. */
37
+ credential: readonly CredentialTypeRef[];
38
+ /** True for a webhook trigger, which an external provider calls. */
39
+ webhook: boolean;
40
+ }
41
+ export declare function buildTriggerSummary(t: AnyTrigger): TriggerSummary;
42
+ export declare function buildTriggerDescriptor(t: AnyTrigger): TriggerDescriptor;
43
+ export {};
44
+ //# 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;IACvB,4FAA4F;IAC5F,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,CAWjE;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,UAAU,GAAG,iBAAiB,CAWvE"}
@@ -0,0 +1,30 @@
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
+ ...(t.connectorIcon !== undefined ? { connectorIcon: t.connectorIcon } : {}),
16
+ };
17
+ }
18
+ export function buildTriggerDescriptor(t) {
19
+ return {
20
+ ...buildTriggerSummary(t),
21
+ configSchema: t.decorateConfigSchema(zodToJsonSchemaRecord(t.configSchema)),
22
+ outputSchema: zodToJsonSchemaRecord(t.outputSchema),
23
+ requiresScopeFilter: t.requiresScopeFilter ?? false,
24
+ scopeFilterFields: t.scopeFilterFields ?? [],
25
+ credentialSlots: t.credentialSlots ?? [],
26
+ credential: credentialTypeRefs(t.credential),
27
+ webhook: t instanceof WebhookTrigger,
28
+ };
29
+ }
30
+ //# 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;AAsCvE,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;QAC5E,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,62 @@
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, InboundReply, 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:
11
+ *
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 handshake}, and sends its reply if it returns one,
16
+ * 4. calls {@link verify} with the exact bytes and those credentials,
17
+ * 5. parses the body,
18
+ *
19
+ * and only then calls {@link handleRequest}. Each event it returns must pass
20
+ * the workflow's trigger filter to become a run.
27
21
  *
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.
22
+ * How a request is verified belongs to the connector: its provider's signing
23
+ * scheme, its own utilities. The engine's part is that verification always
24
+ * runs first and receives the right credentials. The URL carries no secret, so
25
+ * an implementation that accepts everything leaves the workflow open to anyone
26
+ * who learns its id.
32
27
  */
33
28
  export declare abstract class WebhookTrigger<TConfig extends z.ZodTypeAny = z.ZodTypeAny> extends BaseTrigger<TConfig> {
34
29
  /**
35
- * Process an incoming webhook request.
36
- * Return the data to inject as trigger context and the HTTP response.
30
+ * Answer a provider's URL handshake: the request some providers send when the
31
+ * URL is registered, before any real delivery, expecting a reply in their own
32
+ * format. Return that reply, or `undefined` for every other request.
33
+ *
34
+ * Runs before {@link verify}, so the request is unauthenticated: some handshakes
35
+ * are unsigned (Microsoft Graph's `validationToken`), and some arrive as GET
36
+ * (Meta's `hub.challenge`). That is why a handshake can only reply, never start
37
+ * a run. Match the provider's handshake exactly, echo only what it expects echoed,
38
+ * and check a token it sends against the credentials where it sends one.
39
+ *
40
+ * A GET reaches no other method: when this returns `undefined` for one, the
41
+ * sender gets 404. A signed handshake, such as Slack's `url_verification`, is
42
+ * better answered from {@link handleRequest}, after verification.
43
+ *
44
+ * A thrown error is logged and the request carries on to {@link verify}.
37
45
  */
38
- abstract handleRequest(request: WebhookRequest, config: z.infer<TConfig>): Promise<WebhookHandleResult>;
46
+ handshake(_request: InboundHttpRequest, _config: z.infer<TConfig>, _ctx: TriggerExecutionContext): Promise<InboundReply | undefined>;
39
47
  /**
40
- * Called when the workflow is activated. Use to register the webhook URL
41
- * with the external service (e.g. Stripe, GitHub).
48
+ * Is this request really from the provider? Return false, or throw, to reject
49
+ * it with 401. Runs before the body is parsed.
50
+ *
51
+ * Read a secret with `credentialValues(ctx.credentials, slot, 'secret')`.
42
52
  */
43
- onActivate?(config: z.infer<TConfig>, ctx: WebhookActivationContext): Promise<void>;
53
+ abstract verify(request: InboundHttpRequest, config: z.infer<TConfig>, ctx: TriggerExecutionContext): Promise<boolean>;
44
54
  /**
45
- * Called when the workflow is deactivated. Use to unregister from the
46
- * external service.
55
+ * Turn a verified request into events, and say what to reply.
56
+ *
57
+ * Should be pure: no network calls. Enrichment that needs the provider's API
58
+ * belongs in `hydratePayload`, which runs inside the execution.
47
59
  */
48
- onDeactivate?(config: z.infer<TConfig>, ctx: WebhookActivationContext): Promise<void>;
60
+ abstract handleRequest(request: RawInboundRequest, config: z.infer<TConfig>, ctx: TriggerExecutionContext): Promise<Translation>;
49
61
  }
50
62
  //# 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,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE3G;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,8BAAsB,cAAc,CAClC,OAAO,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAC3C,SAAQ,WAAW,CAAC,OAAO,CAAC;IAC5B;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CACP,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EACzB,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;IAIpC;;;;;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,13 +1,47 @@
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 handshake}, and sends its reply if it returns one,
13
+ * 4. calls {@link verify} with the exact bytes and those credentials,
14
+ * 5. parses the body,
15
+ *
16
+ * and only then calls {@link handleRequest}. Each event it returns must pass
17
+ * the workflow's trigger filter to become a run.
18
+ *
19
+ * How a request is verified belongs to the connector: its provider's signing
20
+ * scheme, its own utilities. The engine's part is that verification always
21
+ * runs first and receives the right credentials. The URL carries no secret, so
22
+ * an implementation that accepts everything leaves the workflow open to anyone
23
+ * who learns its id.
10
24
  */
11
25
  export class WebhookTrigger extends BaseTrigger {
26
+ /**
27
+ * Answer a provider's URL handshake: the request some providers send when the
28
+ * URL is registered, before any real delivery, expecting a reply in their own
29
+ * format. Return that reply, or `undefined` for every other request.
30
+ *
31
+ * Runs before {@link verify}, so the request is unauthenticated: some handshakes
32
+ * are unsigned (Microsoft Graph's `validationToken`), and some arrive as GET
33
+ * (Meta's `hub.challenge`). That is why a handshake can only reply, never start
34
+ * a run. Match the provider's handshake exactly, echo only what it expects echoed,
35
+ * and check a token it sends against the credentials where it sends one.
36
+ *
37
+ * A GET reaches no other method: when this returns `undefined` for one, the
38
+ * sender gets 404. A signed handshake, such as Slack's `url_verification`, is
39
+ * better answered from {@link handleRequest}, after verification.
40
+ *
41
+ * A thrown error is logged and the request carries on to {@link verify}.
42
+ */
43
+ handshake(_request, _config, _ctx) {
44
+ return Promise.resolve(undefined);
45
+ }
12
46
  }
13
47
  //# sourceMappingURL=webhook-trigger.js.map
@@ -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;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAgB,cAEpB,SAAQ,WAAoB;IAC5B;;;;;;;;;;;;;;;;OAgBG;IACH,SAAS,CACP,QAA4B,EAC5B,OAAyB,EACzB,IAA6B;QAE7B,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;CAyBF"}
@@ -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.