@xyne/workflow-sdk 3.2.38 → 3.2.40

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 (212) hide show
  1. package/dist/builder/index.d.ts +3 -1
  2. package/dist/builder/index.d.ts.map +1 -1
  3. package/dist/builder/index.js +7 -1
  4. package/dist/builder/index.js.map +1 -1
  5. package/dist/client/types.d.ts +13 -0
  6. package/dist/client/types.d.ts.map +1 -1
  7. package/dist/client/workflow-client.d.ts.map +1 -1
  8. package/dist/client/workflow-client.js +8 -0
  9. package/dist/client/workflow-client.js.map +1 -1
  10. package/dist/common/citation-ref.d.ts +36 -36
  11. package/dist/connectors/builtin/builtin-connector.d.ts +1 -0
  12. package/dist/connectors/builtin/builtin-connector.d.ts.map +1 -1
  13. package/dist/connectors/builtin/builtin-connector.js +1 -0
  14. package/dist/connectors/builtin/builtin-connector.js.map +1 -1
  15. package/dist/connectors/builtin/steps/http-request.step.d.ts +2 -2
  16. package/dist/connectors/builtin/steps/switch.step.d.ts +12 -12
  17. package/dist/connectors/builtin/steps/wait.step.d.ts +90 -90
  18. package/dist/connectors/builtin/triggers/default-cron-trigger.d.ts +9 -1
  19. package/dist/connectors/builtin/triggers/default-cron-trigger.d.ts.map +1 -1
  20. package/dist/connectors/builtin/triggers/default-cron-trigger.js +3 -3
  21. package/dist/connectors/builtin/triggers/default-cron-trigger.js.map +1 -1
  22. package/dist/connectors/builtin/triggers/default-event-trigger.d.ts +12 -1
  23. package/dist/connectors/builtin/triggers/default-event-trigger.d.ts.map +1 -1
  24. package/dist/connectors/builtin/triggers/default-event-trigger.js +13 -1
  25. package/dist/connectors/builtin/triggers/default-event-trigger.js.map +1 -1
  26. package/dist/connectors/builtin/triggers/default-manual-trigger.d.ts +4 -1
  27. package/dist/connectors/builtin/triggers/default-manual-trigger.d.ts.map +1 -1
  28. package/dist/connectors/builtin/triggers/default-manual-trigger.js +3 -1
  29. package/dist/connectors/builtin/triggers/default-manual-trigger.js.map +1 -1
  30. package/dist/connectors/core/base-connector.d.ts +5 -0
  31. package/dist/connectors/core/base-connector.d.ts.map +1 -1
  32. package/dist/connectors/core/base-connector.js +5 -0
  33. package/dist/connectors/core/base-connector.js.map +1 -1
  34. package/dist/connectors/core/connector-registry.d.ts.map +1 -1
  35. package/dist/connectors/core/connector-registry.js +26 -12
  36. package/dist/connectors/core/connector-registry.js.map +1 -1
  37. package/dist/engine/condition-evaluator.d.ts.map +1 -1
  38. package/dist/engine/condition-evaluator.js +41 -5
  39. package/dist/engine/condition-evaluator.js.map +1 -1
  40. package/dist/engine/config-validator.d.ts +8 -0
  41. package/dist/engine/config-validator.d.ts.map +1 -1
  42. package/dist/engine/config-validator.js +61 -4
  43. package/dist/engine/config-validator.js.map +1 -1
  44. package/dist/engine/workflow-executor.d.ts.map +1 -1
  45. package/dist/engine/workflow-executor.js +5 -28
  46. package/dist/engine/workflow-executor.js.map +1 -1
  47. package/dist/index.d.ts +8 -4
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +3 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/ingest/start-policy.d.ts +202 -0
  52. package/dist/ingest/start-policy.d.ts.map +1 -0
  53. package/dist/ingest/start-policy.js +199 -0
  54. package/dist/ingest/start-policy.js.map +1 -0
  55. package/dist/ingest/types.d.ts +25 -6
  56. package/dist/ingest/types.d.ts.map +1 -1
  57. package/dist/persistence/in-memory-adapter.d.ts +4 -2
  58. package/dist/persistence/in-memory-adapter.d.ts.map +1 -1
  59. package/dist/persistence/in-memory-adapter.js +9 -1
  60. package/dist/persistence/in-memory-adapter.js.map +1 -1
  61. package/dist/persistence/types.d.ts +53 -1
  62. package/dist/persistence/types.d.ts.map +1 -1
  63. package/dist/router/types.d.ts +1 -0
  64. package/dist/router/types.d.ts.map +1 -1
  65. package/dist/router/workflow-router.d.ts.map +1 -1
  66. package/dist/router/workflow-router.js +57 -5
  67. package/dist/router/workflow-router.js.map +1 -1
  68. package/dist/runtime/types.d.ts +5 -0
  69. package/dist/runtime/types.d.ts.map +1 -1
  70. package/dist/runtime/workflow-runtime.d.ts +121 -7
  71. package/dist/runtime/workflow-runtime.d.ts.map +1 -1
  72. package/dist/runtime/workflow-runtime.js +430 -57
  73. package/dist/runtime/workflow-runtime.js.map +1 -1
  74. package/dist/schema/options.d.ts +101 -0
  75. package/dist/schema/options.d.ts.map +1 -0
  76. package/dist/schema/options.js +14 -0
  77. package/dist/schema/options.js.map +1 -0
  78. package/dist/steps/base-step.d.ts +12 -1
  79. package/dist/steps/base-step.d.ts.map +1 -1
  80. package/dist/steps/base-step.js +1 -0
  81. package/dist/steps/base-step.js.map +1 -1
  82. package/dist/steps/step-descriptor.d.ts +2 -0
  83. package/dist/steps/step-descriptor.d.ts.map +1 -1
  84. package/dist/steps/step-descriptor.js +1 -0
  85. package/dist/steps/step-descriptor.js.map +1 -1
  86. package/dist/triggers/api-trigger.d.ts +1 -1
  87. package/dist/triggers/api-trigger.d.ts.map +1 -1
  88. package/dist/triggers/api-trigger.js.map +1 -1
  89. package/dist/triggers/base-trigger.d.ts +67 -8
  90. package/dist/triggers/base-trigger.d.ts.map +1 -1
  91. package/dist/triggers/base-trigger.js +15 -3
  92. package/dist/triggers/base-trigger.js.map +1 -1
  93. package/dist/triggers/cron-trigger.d.ts +1 -1
  94. package/dist/triggers/cron-trigger.d.ts.map +1 -1
  95. package/dist/triggers/cron-trigger.js.map +1 -1
  96. package/dist/triggers/event-trigger.d.ts +3 -3
  97. package/dist/triggers/event-trigger.d.ts.map +1 -1
  98. package/dist/triggers/event-trigger.js +2 -2
  99. package/dist/triggers/event-trigger.js.map +1 -1
  100. package/dist/triggers/manual-trigger.d.ts +1 -1
  101. package/dist/triggers/manual-trigger.d.ts.map +1 -1
  102. package/dist/triggers/manual-trigger.js.map +1 -1
  103. package/dist/triggers/trigger-descriptor.d.ts +2 -0
  104. package/dist/triggers/trigger-descriptor.d.ts.map +1 -1
  105. package/dist/triggers/trigger-descriptor.js +1 -0
  106. package/dist/triggers/trigger-descriptor.js.map +1 -1
  107. package/dist/triggers/webhook-trigger.d.ts +25 -6
  108. package/dist/triggers/webhook-trigger.d.ts.map +1 -1
  109. package/dist/triggers/webhook-trigger.js +23 -2
  110. package/dist/triggers/webhook-trigger.js.map +1 -1
  111. package/dist/types/config-path.d.ts +24 -0
  112. package/dist/types/config-path.d.ts.map +1 -0
  113. package/dist/types/config-path.js +18 -0
  114. package/dist/types/config-path.js.map +1 -0
  115. package/dist/types/context.d.ts.map +1 -1
  116. package/dist/types/operators.d.ts +15 -1
  117. package/dist/types/operators.d.ts.map +1 -1
  118. package/dist/types/operators.js +21 -0
  119. package/dist/types/operators.js.map +1 -1
  120. package/dist/types/workflow-config.d.ts +13 -0
  121. package/dist/types/workflow-config.d.ts.map +1 -1
  122. package/dist/types/workflow-config.js +9 -7
  123. package/dist/types/workflow-config.js.map +1 -1
  124. package/dist/util/option-mark.d.ts +44 -0
  125. package/dist/util/option-mark.d.ts.map +1 -0
  126. package/dist/util/option-mark.js +132 -0
  127. package/dist/util/option-mark.js.map +1 -0
  128. package/dist/util/schema-convert.d.ts +5 -0
  129. package/dist/util/schema-convert.d.ts.map +1 -1
  130. package/dist/util/schema-convert.js +7 -1
  131. package/dist/util/schema-convert.js.map +1 -1
  132. package/dist/util/schema-marks.d.ts +58 -0
  133. package/dist/util/schema-marks.d.ts.map +1 -0
  134. package/dist/util/schema-marks.js +161 -0
  135. package/dist/util/schema-marks.js.map +1 -0
  136. package/dist/util/variable-ref.d.ts +0 -5
  137. package/dist/util/variable-ref.d.ts.map +1 -1
  138. package/dist/util/variable-ref.js +0 -5
  139. package/dist/util/variable-ref.js.map +1 -1
  140. package/package.json +1 -1
  141. package/dist/runtime/execution-event-bus.d.ts +0 -38
  142. package/dist/runtime/execution-event-bus.d.ts.map +0 -1
  143. package/dist/runtime/execution-event-bus.js +0 -87
  144. package/dist/runtime/execution-event-bus.js.map +0 -1
  145. package/dist/steps/builtin/code.step.d.ts +0 -99
  146. package/dist/steps/builtin/code.step.d.ts.map +0 -1
  147. package/dist/steps/builtin/code.step.js +0 -152
  148. package/dist/steps/builtin/code.step.js.map +0 -1
  149. package/dist/steps/builtin/conditional.step.d.ts +0 -182
  150. package/dist/steps/builtin/conditional.step.d.ts.map +0 -1
  151. package/dist/steps/builtin/conditional.step.js +0 -82
  152. package/dist/steps/builtin/conditional.step.js.map +0 -1
  153. package/dist/steps/builtin/dedup.step.d.ts +0 -65
  154. package/dist/steps/builtin/dedup.step.d.ts.map +0 -1
  155. package/dist/steps/builtin/dedup.step.js +0 -61
  156. package/dist/steps/builtin/dedup.step.js.map +0 -1
  157. package/dist/steps/builtin/http-request.step.d.ts +0 -1020
  158. package/dist/steps/builtin/http-request.step.d.ts.map +0 -1
  159. package/dist/steps/builtin/http-request.step.js +0 -491
  160. package/dist/steps/builtin/http-request.step.js.map +0 -1
  161. package/dist/steps/builtin/loop.step.d.ts +0 -100
  162. package/dist/steps/builtin/loop.step.d.ts.map +0 -1
  163. package/dist/steps/builtin/loop.step.js +0 -73
  164. package/dist/steps/builtin/loop.step.js.map +0 -1
  165. package/dist/steps/builtin/map.step.d.ts +0 -148
  166. package/dist/steps/builtin/map.step.d.ts.map +0 -1
  167. package/dist/steps/builtin/map.step.js +0 -111
  168. package/dist/steps/builtin/map.step.js.map +0 -1
  169. package/dist/steps/builtin/parallel.step.d.ts +0 -246
  170. package/dist/steps/builtin/parallel.step.d.ts.map +0 -1
  171. package/dist/steps/builtin/parallel.step.js +0 -175
  172. package/dist/steps/builtin/parallel.step.js.map +0 -1
  173. package/dist/steps/builtin/ssrf-guard.d.ts +0 -9
  174. package/dist/steps/builtin/ssrf-guard.d.ts.map +0 -1
  175. package/dist/steps/builtin/ssrf-guard.js +0 -115
  176. package/dist/steps/builtin/ssrf-guard.js.map +0 -1
  177. package/dist/steps/builtin/switch.step.d.ts +0 -235
  178. package/dist/steps/builtin/switch.step.d.ts.map +0 -1
  179. package/dist/steps/builtin/switch.step.js +0 -101
  180. package/dist/steps/builtin/switch.step.js.map +0 -1
  181. package/dist/steps/builtin/wait.step.d.ts +0 -1072
  182. package/dist/steps/builtin/wait.step.d.ts.map +0 -1
  183. package/dist/steps/builtin/wait.step.js +0 -254
  184. package/dist/steps/builtin/wait.step.js.map +0 -1
  185. package/dist/steps/step-registry.d.ts +0 -62
  186. package/dist/steps/step-registry.d.ts.map +0 -1
  187. package/dist/steps/step-registry.js +0 -103
  188. package/dist/steps/step-registry.js.map +0 -1
  189. package/dist/triggers/builtin/default-cron-trigger.d.ts +0 -44
  190. package/dist/triggers/builtin/default-cron-trigger.d.ts.map +0 -1
  191. package/dist/triggers/builtin/default-cron-trigger.js +0 -31
  192. package/dist/triggers/builtin/default-cron-trigger.js.map +0 -1
  193. package/dist/triggers/builtin/default-event-trigger.d.ts +0 -32
  194. package/dist/triggers/builtin/default-event-trigger.d.ts.map +0 -1
  195. package/dist/triggers/builtin/default-event-trigger.js +0 -21
  196. package/dist/triggers/builtin/default-event-trigger.js.map +0 -1
  197. package/dist/triggers/builtin/default-manual-trigger.d.ts +0 -45
  198. package/dist/triggers/builtin/default-manual-trigger.d.ts.map +0 -1
  199. package/dist/triggers/builtin/default-manual-trigger.js +0 -51
  200. package/dist/triggers/builtin/default-manual-trigger.js.map +0 -1
  201. package/dist/triggers/builtin/default-webhook-trigger.d.ts +0 -72
  202. package/dist/triggers/builtin/default-webhook-trigger.d.ts.map +0 -1
  203. package/dist/triggers/builtin/default-webhook-trigger.js +0 -91
  204. package/dist/triggers/builtin/default-webhook-trigger.js.map +0 -1
  205. package/dist/triggers/builtin/default-webhook-v2-trigger.d.ts +0 -29
  206. package/dist/triggers/builtin/default-webhook-v2-trigger.d.ts.map +0 -1
  207. package/dist/triggers/builtin/default-webhook-v2-trigger.js +0 -38
  208. package/dist/triggers/builtin/default-webhook-v2-trigger.js.map +0 -1
  209. package/dist/triggers/trigger-registry.d.ts +0 -48
  210. package/dist/triggers/trigger-registry.d.ts.map +0 -1
  211. package/dist/triggers/trigger-registry.js +0 -83
  212. package/dist/triggers/trigger-registry.js.map +0 -1
@@ -0,0 +1,202 @@
1
+ /**
2
+ * When a run becomes eligible — the trigger binding's answer to "start now, or later?".
3
+ *
4
+ * A delayed start is a property of the BINDING, not a step: "escalate two hours
5
+ * after the ticket was created" says when the workflow starts, not what it does.
6
+ * Keeping it here means the run is armed at arrival and admitted when it fires, so
7
+ * the conditions that decide whether it acts are judged against the world as it is
8
+ * THEN — which is the entire point of waiting.
9
+ *
10
+ * Two constructors rather than one anchor field, deliberately: `delay` is anchored
11
+ * on the event, which already knows when it happened, so it needs no read; `at` is
12
+ * anchored on a date carried by the enriched payload, so it does. The difference is
13
+ * visible in the type, and {@link startNeedsPayload} lets the runtime branch on it
14
+ * before deciding whether to enrich anything.
15
+ */
16
+ import { z } from 'zod';
17
+ import type { WorkflowConfig } from '../types/workflow-config.js';
18
+ import type { TriggerEvent } from './types.js';
19
+ export interface Duration {
20
+ readonly amount: number;
21
+ readonly unit: 'minutes' | 'hours' | 'days';
22
+ }
23
+ /**
24
+ * An offset that can fall on either side of its anchor.
25
+ *
26
+ * "One day before the due date" is as ordinary a rule as "thirty minutes after
27
+ * the ETA", and a negative amount in a field labelled *hours* reads badly in a
28
+ * form — so the side is its own word.
29
+ */
30
+ export interface SignedOffset extends Duration {
31
+ readonly direction: 'before' | 'after';
32
+ }
33
+ export type TriggerStart =
34
+ /** Admit the event as it arrives. The default when a binding says nothing. */
35
+ {
36
+ readonly kind: 'immediate';
37
+ }
38
+ /** Wait `offset` from the event itself — no enrichment needed to know when. */
39
+ | {
40
+ readonly kind: 'delay';
41
+ readonly offset: Duration;
42
+ }
43
+ /**
44
+ * Wait for a moment in time, optionally offset to either side of it.
45
+ *
46
+ * The anchor is a DATETIME FIELD in the same sense as any other config value
47
+ * that accepts a reference: either a literal ISO timestamp, or `{{...}}`
48
+ * reading a datetime the trigger produces (`{{trigger.ticket.eta}}`) or a
49
+ * workflow variable. Typing it this way rather than as a bare payload path is
50
+ * what lets the builder offer the trigger's own fields in its picker, and lets
51
+ * the validator reject an anchor that does not exist or is not a time — a bare
52
+ * path fails silently instead: rename the field and every rule that used it
53
+ * quietly stops arming.
54
+ *
55
+ * `ifPast` decides what a time already behind us means: run straight away, or
56
+ * let it go.
57
+ */
58
+ | {
59
+ readonly kind: 'at';
60
+ readonly anchor: string;
61
+ readonly offset?: SignedOffset;
62
+ readonly ifPast: 'run' | 'skip';
63
+ };
64
+ /**
65
+ * How far ahead a run may be armed. A typo in a date field ("2035") should not
66
+ * park a timer for a decade, and the queue backing the delay has its own limits.
67
+ */
68
+ export declare const MAX_START_DELAY_MS: number;
69
+ export declare function durationMs(offset: Duration): number;
70
+ /**
71
+ * What an anchor has to resolve to. Exported so the config validator can hold a
72
+ * reference to the same contract the runtime reads: anchor on a title and the
73
+ * workflow does not save, rather than arming nothing at runtime.
74
+ */
75
+ export declare const AnchorValueSchema: z.ZodString;
76
+ export declare const TriggerStartSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
77
+ kind: z.ZodLiteral<"immediate">;
78
+ }, "strict", z.ZodTypeAny, {
79
+ kind: "immediate";
80
+ }, {
81
+ kind: "immediate";
82
+ }>, z.ZodObject<{
83
+ kind: z.ZodLiteral<"delay">;
84
+ offset: z.ZodEffects<z.ZodObject<{
85
+ amount: z.ZodNumber;
86
+ unit: z.ZodEnum<["minutes", "hours", "days"]>;
87
+ }, "strict", z.ZodTypeAny, {
88
+ unit: "minutes" | "hours" | "days";
89
+ amount: number;
90
+ }, {
91
+ unit: "minutes" | "hours" | "days";
92
+ amount: number;
93
+ }>, {
94
+ unit: "minutes" | "hours" | "days";
95
+ amount: number;
96
+ }, {
97
+ unit: "minutes" | "hours" | "days";
98
+ amount: number;
99
+ }>;
100
+ }, "strict", z.ZodTypeAny, {
101
+ offset: {
102
+ unit: "minutes" | "hours" | "days";
103
+ amount: number;
104
+ };
105
+ kind: "delay";
106
+ }, {
107
+ offset: {
108
+ unit: "minutes" | "hours" | "days";
109
+ amount: number;
110
+ };
111
+ kind: "delay";
112
+ }>, z.ZodObject<{
113
+ kind: z.ZodLiteral<"at">;
114
+ anchor: z.ZodEffects<z.ZodString, string, string>;
115
+ offset: z.ZodOptional<z.ZodEffects<z.ZodObject<{
116
+ direction: z.ZodEnum<["before", "after"]>;
117
+ amount: z.ZodNumber;
118
+ unit: z.ZodEnum<["minutes", "hours", "days"]>;
119
+ }, "strict", z.ZodTypeAny, {
120
+ unit: "minutes" | "hours" | "days";
121
+ amount: number;
122
+ direction: "before" | "after";
123
+ }, {
124
+ unit: "minutes" | "hours" | "days";
125
+ amount: number;
126
+ direction: "before" | "after";
127
+ }>, {
128
+ unit: "minutes" | "hours" | "days";
129
+ amount: number;
130
+ direction: "before" | "after";
131
+ }, {
132
+ unit: "minutes" | "hours" | "days";
133
+ amount: number;
134
+ direction: "before" | "after";
135
+ }>>;
136
+ ifPast: z.ZodEnum<["run", "skip"]>;
137
+ }, "strict", z.ZodTypeAny, {
138
+ anchor: string;
139
+ kind: "at";
140
+ ifPast: "run" | "skip";
141
+ offset?: {
142
+ unit: "minutes" | "hours" | "days";
143
+ amount: number;
144
+ direction: "before" | "after";
145
+ } | undefined;
146
+ }, {
147
+ anchor: string;
148
+ kind: "at";
149
+ ifPast: "run" | "skip";
150
+ offset?: {
151
+ unit: "minutes" | "hours" | "days";
152
+ amount: number;
153
+ direction: "before" | "after";
154
+ } | undefined;
155
+ }>]>;
156
+ /** The dotted path inside an anchor reference, for display and validation. */
157
+ export declare function anchorSource(anchor: string): string;
158
+ /** Where a fire time came from, so a scheduled run can explain itself. */
159
+ export interface StartAnchor {
160
+ /** `event` for the event's own clock, otherwise the payload path that was read. */
161
+ readonly source: string;
162
+ readonly value: string;
163
+ }
164
+ export type StartDecision = {
165
+ readonly kind: 'now';
166
+ } | {
167
+ readonly kind: 'at';
168
+ readonly at: Date;
169
+ readonly anchor: StartAnchor;
170
+ } | {
171
+ readonly kind: 'skip';
172
+ readonly reason: 'anchor-missing' | 'anchor-unreadable' | 'anchor-past' | 'anchor-too-far';
173
+ };
174
+ /**
175
+ * Does working out the fire time need the enriched payload?
176
+ *
177
+ * Only when the anchor reads the trigger. A literal timestamp, or an anchor on a
178
+ * workflow variable, is a constant the author set — it costs no read at all.
179
+ */
180
+ export declare function startNeedsPayload(start: TriggerStart | undefined): boolean;
181
+ /** Is this binding delayed at all? */
182
+ export declare function isDelayedStart(start: TriggerStart | undefined): boolean;
183
+ /**
184
+ * When should this event's run become eligible?
185
+ *
186
+ * `anchorValue` is whatever the policy's anchor reference resolved to, which the
187
+ * runtime reads for `at` policies and leaves undefined for the rest. Nothing it
188
+ * read is retained: a delayed run is armed from the raw event and enriched again
189
+ * when it fires, and that second reading is the one the run acts on.
190
+ */
191
+ export declare function resolveStartAt(start: TriggerStart | undefined, event: TriggerEvent, anchorValue: unknown, now: Date): StartDecision;
192
+ /**
193
+ * Read an anchor against the only context that exists before a run: the trigger's
194
+ * payload and the workflow's author-time variables. Mirrors how a trigger filter
195
+ * is evaluated, so both read the same world.
196
+ */
197
+ export declare function readAnchor(anchor: string, payload: Readonly<Record<string, unknown>>, variables: WorkflowConfig['variables']): unknown;
198
+ /** Why a delayed start produced no run, in words a run list can show. */
199
+ export declare function startSkipReason(reason: Extract<StartDecision, {
200
+ kind: 'skip';
201
+ }>['reason']): string;
202
+ //# sourceMappingURL=start-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-policy.d.ts","sourceRoot":"","sources":["../../src/ingest/start-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,199 @@
1
+ /**
2
+ * When a run becomes eligible — the trigger binding's answer to "start now, or later?".
3
+ *
4
+ * A delayed start is a property of the BINDING, not a step: "escalate two hours
5
+ * after the ticket was created" says when the workflow starts, not what it does.
6
+ * Keeping it here means the run is armed at arrival and admitted when it fires, so
7
+ * the conditions that decide whether it acts are judged against the world as it is
8
+ * THEN — which is the entire point of waiting.
9
+ *
10
+ * Two constructors rather than one anchor field, deliberately: `delay` is anchored
11
+ * on the event, which already knows when it happened, so it needs no read; `at` is
12
+ * anchored on a date carried by the enriched payload, so it does. The difference is
13
+ * visible in the type, and {@link startNeedsPayload} lets the runtime branch on it
14
+ * before deciding whether to enrich anything.
15
+ */
16
+ import { z } from 'zod';
17
+ import { VariableResolver } from '../engine/variable-resolver.js';
18
+ import { extractRefPath, isPureRef } from '../util/variable-ref.js';
19
+ import { projectVariables } from '../types/workflow-variable.js';
20
+ const resolver = new VariableResolver();
21
+ /**
22
+ * How far ahead a run may be armed. A typo in a date field ("2035") should not
23
+ * park a timer for a decade, and the queue backing the delay has its own limits.
24
+ */
25
+ export const MAX_START_DELAY_MS = 30 * 24 * 60 * 60 * 1000;
26
+ const MS_PER_UNIT = {
27
+ minutes: 60_000,
28
+ hours: 3_600_000,
29
+ days: 86_400_000,
30
+ };
31
+ export function durationMs(offset) {
32
+ return offset.amount * MS_PER_UNIT[offset.unit];
33
+ }
34
+ const DurationShape = {
35
+ amount: z.number().int().positive(),
36
+ unit: z.enum(['minutes', 'hours', 'days']),
37
+ };
38
+ const withinCap = {
39
+ check: (d) => durationMs(d) <= MAX_START_DELAY_MS,
40
+ message: 'A start delay may be at most 30 days',
41
+ };
42
+ const DurationSchema = z.object(DurationShape).strict().refine(withinCap.check, {
43
+ message: withinCap.message,
44
+ });
45
+ const SignedOffsetSchema = z
46
+ .object({ ...DurationShape, direction: z.enum(['before', 'after']) })
47
+ .strict()
48
+ .refine(withinCap.check, { message: withinCap.message });
49
+ /**
50
+ * What an anchor has to resolve to. Exported so the config validator can hold a
51
+ * reference to the same contract the runtime reads: anchor on a title and the
52
+ * workflow does not save, rather than arming nothing at runtime.
53
+ */
54
+ export const AnchorValueSchema = z.string().datetime({ offset: true });
55
+ /**
56
+ * A datetime field that also takes a reference — the same shape as any other
57
+ * config value authors can point at data, so the builder's variable picker and
58
+ * its type filter work on it unchanged.
59
+ *
60
+ * A reference may read only the trigger's output or a workflow variable: those
61
+ * are the only two things that exist before a run.
62
+ */
63
+ const AnchorSchema = z
64
+ .string()
65
+ .min(1)
66
+ .superRefine((value, ctx) => {
67
+ if (isPureRef(value)) {
68
+ const head = anchorSource(value).split('.')[0];
69
+ if (head !== 'trigger' && head !== 'vars') {
70
+ ctx.addIssue({
71
+ code: z.ZodIssueCode.custom,
72
+ message: 'An anchor can only read trigger data or a workflow variable',
73
+ });
74
+ }
75
+ return;
76
+ }
77
+ if (!AnchorValueSchema.safeParse(value).success) {
78
+ ctx.addIssue({
79
+ code: z.ZodIssueCode.custom,
80
+ message: 'An anchor must be a date and time, or a reference to one such as {{trigger.ticket.eta}}',
81
+ });
82
+ }
83
+ });
84
+ export const TriggerStartSchema = z.discriminatedUnion('kind', [
85
+ z.object({ kind: z.literal('immediate') }).strict(),
86
+ z.object({ kind: z.literal('delay'), offset: DurationSchema }).strict(),
87
+ z
88
+ .object({
89
+ kind: z.literal('at'),
90
+ anchor: AnchorSchema,
91
+ offset: SignedOffsetSchema.optional(),
92
+ ifPast: z.enum(['run', 'skip']),
93
+ })
94
+ .strict(),
95
+ ]);
96
+ /** The dotted path inside an anchor reference, for display and validation. */
97
+ export function anchorSource(anchor) {
98
+ return extractRefPath(anchor) ?? anchor;
99
+ }
100
+ /**
101
+ * Does working out the fire time need the enriched payload?
102
+ *
103
+ * Only when the anchor reads the trigger. A literal timestamp, or an anchor on a
104
+ * workflow variable, is a constant the author set — it costs no read at all.
105
+ */
106
+ export function startNeedsPayload(start) {
107
+ return start?.kind === 'at' && anchorSource(start.anchor).split('.')[0] === 'trigger';
108
+ }
109
+ /** Is this binding delayed at all? */
110
+ export function isDelayedStart(start) {
111
+ return start !== undefined && start.kind !== 'immediate';
112
+ }
113
+ function toDate(value) {
114
+ if (value instanceof Date)
115
+ return Number.isNaN(value.getTime()) ? null : value;
116
+ if (typeof value === 'number')
117
+ return new Date(value);
118
+ if (typeof value !== 'string' || value.trim() === '')
119
+ return null;
120
+ const parsed = new Date(value);
121
+ return Number.isNaN(parsed.getTime()) ? null : parsed;
122
+ }
123
+ /**
124
+ * When should this event's run become eligible?
125
+ *
126
+ * `anchorValue` is whatever the policy's anchor reference resolved to, which the
127
+ * runtime reads for `at` policies and leaves undefined for the rest. Nothing it
128
+ * read is retained: a delayed run is armed from the raw event and enriched again
129
+ * when it fires, and that second reading is the one the run acts on.
130
+ */
131
+ export function resolveStartAt(start, event, anchorValue, now) {
132
+ if (!start || start.kind === 'immediate')
133
+ return { kind: 'now' };
134
+ if (start.kind === 'delay') {
135
+ // An event with no clock of its own is treated as having just happened —
136
+ // "two hours after the event" then means two hours from arrival.
137
+ const occurred = toDate(event.occurredAt) ?? now;
138
+ const at = new Date(occurred.getTime() + durationMs(start.offset));
139
+ if (at.getTime() <= now.getTime())
140
+ return { kind: 'now' };
141
+ if (at.getTime() - now.getTime() > MAX_START_DELAY_MS) {
142
+ return { kind: 'skip', reason: 'anchor-too-far' };
143
+ }
144
+ return {
145
+ kind: 'at',
146
+ at,
147
+ anchor: { source: 'event', value: occurred.toISOString() },
148
+ };
149
+ }
150
+ if (anchorValue === undefined || anchorValue === null) {
151
+ return { kind: 'skip', reason: 'anchor-missing' };
152
+ }
153
+ const anchorDate = toDate(anchorValue);
154
+ if (!anchorDate)
155
+ return { kind: 'skip', reason: 'anchor-unreadable' };
156
+ const shift = start.offset
157
+ ? durationMs(start.offset) * (start.offset.direction === 'before' ? -1 : 1)
158
+ : 0;
159
+ const at = new Date(anchorDate.getTime() + shift);
160
+ if (at.getTime() <= now.getTime()) {
161
+ return start.ifPast === 'run' ? { kind: 'now' } : { kind: 'skip', reason: 'anchor-past' };
162
+ }
163
+ if (at.getTime() - now.getTime() > MAX_START_DELAY_MS) {
164
+ return { kind: 'skip', reason: 'anchor-too-far' };
165
+ }
166
+ return {
167
+ kind: 'at',
168
+ at,
169
+ anchor: { source: anchorSource(start.anchor), value: anchorDate.toISOString() },
170
+ };
171
+ }
172
+ /**
173
+ * Read an anchor against the only context that exists before a run: the trigger's
174
+ * payload and the workflow's author-time variables. Mirrors how a trigger filter
175
+ * is evaluated, so both read the same world.
176
+ */
177
+ export function readAnchor(anchor, payload, variables) {
178
+ const context = {
179
+ workflow: { id: '', metadata: {} },
180
+ trigger: payload,
181
+ steps: {},
182
+ vars: projectVariables(variables),
183
+ };
184
+ return resolver.resolveString(anchor, context);
185
+ }
186
+ /** Why a delayed start produced no run, in words a run list can show. */
187
+ export function startSkipReason(reason) {
188
+ switch (reason) {
189
+ case 'anchor-missing':
190
+ return 'the date this run waits for is not set';
191
+ case 'anchor-unreadable':
192
+ return 'the date this run waits for could not be read';
193
+ case 'anchor-past':
194
+ return 'that date has already passed';
195
+ case 'anchor-too-far':
196
+ return 'that date is more than 30 days away';
197
+ }
198
+ }
199
+ //# sourceMappingURL=start-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-policy.js","sourceRoot":"","sources":["../../src/ingest/start-policy.ts"],"names":[],"mappings":"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"}
@@ -24,13 +24,32 @@ export interface InboundReply {
24
24
  readonly headers?: Readonly<Record<string, string>>;
25
25
  readonly body?: unknown;
26
26
  }
27
- /** One event a trigger extracted from a request. Becomes `context.trigger`. */
28
- export interface InboundEvent {
27
+ /**
28
+ * One event offered to a workflow's trigger binding, whatever brought it in: a
29
+ * domain dispatch, a webhook delivery, a cron tick, or a manual run.
30
+ *
31
+ * What the trigger's `accepts`, `hydrate` and `hydrationKey` hooks see — the
32
+ * event as the source reported it, before any enrichment.
33
+ */
34
+ export interface TriggerEvent<TPayload extends Record<string, unknown> = Record<string, unknown>> {
29
35
  /** Stored as `context.trigger.type`. Usually the trigger's own type. */
30
36
  readonly type: string;
31
- /** Spread into `context.trigger` alongside `type`. */
32
- readonly payload: Readonly<Record<string, unknown>>;
37
+ /**
38
+ * Spread into `context.trigger` alongside `type`.
39
+ *
40
+ * Typed by the trigger that receives it: a trigger declares the shape it is
41
+ * sent, so `accepts` and `hydrate` read real fields rather than indexing a bag
42
+ * of unknowns. Defaults to the open shape for code that handles any trigger.
43
+ */
44
+ readonly payload: Readonly<TPayload>;
45
+ /**
46
+ * When the source says it happened, ISO 8601 — the source's clock, not the
47
+ * engine's, and absent when the source reports none.
48
+ */
49
+ readonly occurredAt?: string;
33
50
  }
51
+ /** One event a trigger extracted from a request. Becomes `context.trigger`. */
52
+ export type InboundEvent<TPayload extends Record<string, unknown> = Record<string, unknown>> = TriggerEvent<TPayload>;
34
53
  /**
35
54
  * What a trigger made of a request.
36
55
  *
@@ -38,8 +57,8 @@ export interface InboundEvent {
38
57
  * as a URL-verification challenge. Zero events without one is a plain
39
58
  * acknowledgement.
40
59
  */
41
- export interface Translation {
42
- readonly events: readonly InboundEvent[];
60
+ export interface Translation<TPayload extends Record<string, unknown> = Record<string, unknown>> {
61
+ readonly events: readonly InboundEvent<TPayload>[];
43
62
  readonly reply?: InboundReply;
44
63
  }
45
64
  /** What webhook ingest produced: the reply to send, and the runs it started. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ingest/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4FAA4F;AAC5F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;IAC1E,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;IACxE,yDAAyD;IACzD,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC9B;AAED,oFAAoF;AACpF,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,8DAA8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACrD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;CAC/B;AAED,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ingest/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4FAA4F;AAC5F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;IAC1E,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;IACxE,yDAAyD;IACzD,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC9B;AAED,oFAAoF;AACpF,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,8DAA8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY,CAC3B,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAElE,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,+EAA+E;AAC/E,MAAM,MAAM,YAAY,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACzF,YAAY,CAAC,QAAQ,CAAC,CAAC;AAEzB;;;;;;GAMG;AACH,MAAM,WAAW,WAAW,CAC1B,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAElE,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;CAC/B;AAED,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C"}
@@ -4,7 +4,7 @@
4
4
  * All data lives in Maps — no external deps. Useful for unit tests
5
5
  * and for hosts bootstrapping without a database.
6
6
  */
7
- import type { PersistenceAdapter, WorkflowRecord, FolderRecord, WorkflowCallbackRecord, ExecutionRecord, ExecutionStateRecord, StepRecord } from './types.js';
7
+ import type { PersistenceAdapter, WorkflowRecord, FolderRecord, WorkflowCallbackRecord, ExecutionOrigin, ExecutionRecord, ExecutionStateRecord, StepRecord } from './types.js';
8
8
  import type { ResumePayload } from '../common/resume-payload.js';
9
9
  import { type IdScope } from '../authz/id-scope.js';
10
10
  import type { ResourceAttributes } from '../authz/attributes.js';
@@ -120,9 +120,11 @@ export declare class InMemoryPersistenceAdapter implements PersistenceAdapter<Id
120
120
  status: string;
121
121
  context: string;
122
122
  sourceExecutionId?: string;
123
+ fireAt?: Date;
124
+ origin?: ExecutionOrigin;
123
125
  attributes?: unknown;
124
126
  }): Promise<string>;
125
- updateExecutionStatus(executionId: string, status: string): Promise<void>;
127
+ updateExecutionStatus(executionId: string, status: string, reason?: string): Promise<void>;
126
128
  getExecution(executionId: string): Promise<ExecutionRecord | null>;
127
129
  listExecutions(filter: IdScope, params: {
128
130
  workflowId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory-adapter.d.ts","sourceRoot":"","sources":["../../src/persistence/in-memory-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"in-memory-adapter.d.ts","sourceRoot":"","sources":["../../src/persistence/in-memory-adapter.ts"],"names":[],"mappings":"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"}
@@ -167,6 +167,12 @@ export class InMemoryPersistenceAdapter {
167
167
  if (data.sourceExecutionId !== undefined) {
168
168
  record.sourceExecutionId = data.sourceExecutionId;
169
169
  }
170
+ if (data.fireAt !== undefined) {
171
+ record.fireAt = data.fireAt;
172
+ }
173
+ if (data.origin !== undefined) {
174
+ record.origin = data.origin;
175
+ }
170
176
  this.executions.set(id, record);
171
177
  this.executionStates.set(id, {
172
178
  context: data.context,
@@ -175,10 +181,12 @@ export class InMemoryPersistenceAdapter {
175
181
  });
176
182
  return id;
177
183
  }
178
- async updateExecutionStatus(executionId, status) {
184
+ async updateExecutionStatus(executionId, status, reason) {
179
185
  const exec = this.executions.get(executionId);
180
186
  if (exec) {
181
187
  exec.status = status;
188
+ if (reason !== undefined)
189
+ exec.endReason = reason;
182
190
  }
183
191
  }
184
192
  async getExecution(executionId) {