@relayflows/surface 2.0.41 → 2.0.43

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.
package/AUTHORING.md ADDED
@@ -0,0 +1,2193 @@
1
+ # Authoring reference
2
+
3
+ Generated by `scripts/generate-authoring-reference.mjs` from the exported types in this checkout. Do not edit.
4
+ Regenerate from the repository root with `npm run gen:docs --prefix packages/surface`. Install tooling first with `cd packages/surface && bun install --frozen-lockfile --ignore-scripts`; no build is required.
5
+
6
+ This file describes signatures; [SURFACE.md](https://github.com/AgentWorkforce/flows/blob/main/docs/SURFACE.md) explains semantics and [CLI.md](https://github.com/AgentWorkforce/flows/blob/main/docs/CLI.md) lists commands. The shipped `src/*.ts` declarations are the canonical source for emitted `dist/*.d.ts`. These links follow `main`; for an installed release, read the same files at this repository's `v<version>` tag.
7
+
8
+ Signatures cover this package. A type from a dependency, such as a helper client from `@relayfile/relay-helpers`, is named by its import line and not expanded; read its methods in that package's typings.
9
+
10
+ Check this reference with `bun run check:docs` in `packages/surface` after any surface, SDK, CLI or generator change. CI does not run that check yet.
11
+
12
+ ## Flow declarations
13
+
14
+ ```ts
15
+ export function flow(name: string, header?: FlowHeader): FlowHandle;
16
+ export function flow<Input = unknown>(name: string, body: FlowBody<Input>): FlowHandle;
17
+ export function flow<Input = unknown>(
18
+ name: string,
19
+ header: FlowHeader,
20
+ body: FlowBody<Input>,
21
+ ): FlowHandle;
22
+ ```
23
+
24
+ ```ts
25
+ /** Optional escalation header; the empty header is the common case. */
26
+ export interface FlowHeader {
27
+ /** Relative paths to reusable authored flows composed by this body. */
28
+ use?: string[];
29
+ /** Semver of this flow; plugins' `compat.base` ranges match against it. */
30
+ version?: string;
31
+ /** Named hook points this body calls via `f.hook`; plugins may implement them. */
32
+ hooks?: string[];
33
+ identity?: string;
34
+ memory?: { script?: boolean; agent?: boolean };
35
+ budget?: string | { tokens?: number; dollars?: number; wallclock?: string };
36
+ tools?: HelperTools & { relayfile?: string[]; mcp?: string[] };
37
+ workspace?: string;
38
+ }
39
+ ```
40
+
41
+ Supporting declaration types (not all are package-level exports):
42
+
43
+ ```ts
44
+ type HelperTools = Partial<Record<keyof Helpers, boolean>>;
45
+ ```
46
+
47
+ ```ts
48
+ export type FlowBody<Input = unknown> = (f: Ctx, input: Input) => Promise<void>;
49
+ ```
50
+
51
+ ```ts
52
+ /** Opaque authored-flow handle. Execution stays behind the journal runtime. */
53
+ export interface FlowHandle {
54
+ readonly name: string;
55
+ on<Event = Record<string, unknown>>(trigger: TriggerSource, body: FlowBody<Event>): TriggeredFlowHandle;
56
+ }
57
+ ```
58
+
59
+ ```ts
60
+ export interface TriggeredFlowHandle extends FlowHandle {}
61
+ ```
62
+
63
+
64
+ ## Context
65
+
66
+ ```ts
67
+ /**
68
+ * The context a journal-backed runtime injects into a flow body.
69
+ *
70
+ * This package declares the authoring contract only. It cannot construct a
71
+ * context or execute a step, so all effects remain behind the journal client.
72
+ */
73
+ export interface Ctx extends Helpers {
74
+ /** Host-verified ports. Absent from direct/local runs and ordinary authored execution. */
75
+ readonly capabilities?: { readonly cloud?: CloudCapabilities };
76
+ readonly mcp: Readonly<Record<string, Readonly<Record<string, (args: unknown) => Step<unknown>>>>>;
77
+ /**
78
+ * Run a command. Resolves to its stdout tail, and a nonzero exit ends the
79
+ * flow — unless `onNonZero: 'record'` is declared, which resolves to a
80
+ * `RunResult` carrying the journaled exit code instead.
81
+ *
82
+ * The literal overloads come first so the default stays the common case: an
83
+ * omitted or `'fail'` policy keeps the `Step<string>` every existing body is
84
+ * written against, and only the literal `'record'` widens the result. The
85
+ * third is for a policy held in a variable, where neither literal applies and
86
+ * the author has to narrow the union themselves.
87
+ */
88
+ run(command: string, options?: RunOptions & { onNonZero?: 'fail' }): Step<string>;
89
+ run(command: string, options: RunOptions & { onNonZero: 'record' }): Step<RunResult>;
90
+ run(command: string, options: RunOptions): Step<string | RunResult>;
91
+ llm(strings: TemplateStringsArray, ...values: unknown[]): Step<string>;
92
+ /** JSON Schema validates the value at runtime; narrow unknown in author code. */
93
+ llm(prompt: string, options: LlmOptions): Step<unknown>;
94
+ agent(name: string, options: AgentOptions): Step<AgentResult>;
95
+ /** Open a durable, bounded event subscription for this running body. */
96
+ on(source: TriggerSource, options: ActivityOptions): Activity;
97
+ /**
98
+ * Ask a person a yes/no question and park until they answer. The run
99
+ * parks durably (kernel `wait.human`); `flows answer <run> <wait> yes|no`
100
+ * (or Cloud's answer route) records the answer and the resumed body
101
+ * continues from this line with it. `to` names who is asked and is
102
+ * recorded with the question; it is not a delivery address.
103
+ */
104
+ human(question: string, options: { to: string }): Step<boolean>;
105
+ /**
106
+ * Run a direct child declared in this flow's `use` header. The child shares
107
+ * this durable root, budget, worker capacity and Cloud graph; arbitrary
108
+ * paths and undeclared flow names are refused before the child body runs.
109
+ */
110
+ dispatch(flow: string, input: unknown): Step<DispatchResult>;
111
+ /**
112
+ * Run every installed implementation of a named hook in lock order and
113
+ * AND-compose the booleans. With no implementations this is a journaled
114
+ * no-op that returns true. A name must appear in the flow header's `hooks`.
115
+ */
116
+ hook(name: string, input: unknown): Step<boolean>;
117
+ /**
118
+ * End the flow with an authored verdict, and optionally say why.
119
+ *
120
+ * `options.detail` is free prose the flow already knows — "review found 1
121
+ * P2: `review.clean` was not created" — and it is what a reader gets instead
122
+ * of a generic sentence. It is journaled with the verdict, so it survives
123
+ * into the run report and `flows status`; the runtime redacts it and bounds
124
+ * it to `COMPLETION_DETAIL_MAX_CODE_POINTS` code points, truncating
125
+ * with a visible marker rather than refusing an over-long one.
126
+ *
127
+ * Whitespace-only is the same as saying nothing: it normalizes to absence,
128
+ * and the verdict reports exactly as the one-argument call does. A `detail`
129
+ * that is present and not a string is refused.
130
+ */
131
+ done(reason: FlowCompletionReason, options?: DoneOptions): void;
132
+ cloud: CloudHelper;
133
+ memory: MemoryHelper;
134
+ }
135
+ ```
136
+
137
+ ## Options and results
138
+
139
+ ### RunOptions
140
+
141
+ ```ts
142
+ export interface RunOptions {
143
+ /** Command lease: milliseconds or a duration such as "5m"; default 30s, maximum 15m. */
144
+ timeout?: string | number;
145
+ /**
146
+ * What a nonzero exit means. `'fail'` (the default) throws, ending the flow
147
+ * at this line. `'record'` journals the exit code and output and resolves to
148
+ * a `RunResult`, so the body can hand a red check's own output to whatever is
149
+ * built to repair it. A timeout, a signal, or a step that never ran still
150
+ * throws under either policy: those produced no verdict to record.
151
+ */
152
+ onNonZero?: 'fail' | 'record';
153
+ }
154
+ ```
155
+
156
+ ### RunResult
157
+
158
+ ```ts
159
+ /**
160
+ * What `f.run` resolves to under `onNonZero: 'record'`.
161
+ *
162
+ * Every field is read back from the step's journaled output envelope, never
163
+ * re-measured: `ok` is the recorded exit code, not a second execution. This is
164
+ * the point of the policy — `<command> || true` discards the code, so the
165
+ * branch below it can only ever be taken on faith.
166
+ */
167
+ export interface RunResult {
168
+ /** Exactly `exitCode === 0`. */
169
+ ok: boolean;
170
+ /** The exit code the kernel journaled for this command. */
171
+ exitCode: number;
172
+ /**
173
+ * `stdout` then `stderr`, joined by a newline when both are nonempty — the
174
+ * string to hand an agent asked to repair what the command reported. It is a
175
+ * diagnostic convenience, not a reconstruction of the real interleaving: the
176
+ * two streams were captured separately and their true ordering is not
177
+ * journaled. Read `stdout` when you need to parse the command's own output.
178
+ */
179
+ output: string;
180
+ /** stdout tail — the same string the default `f.run` resolves to. */
181
+ stdout: string;
182
+ /** stderr tail, where a failing check usually explains itself. */
183
+ stderr: string;
184
+ }
185
+ ```
186
+
187
+ ### AgentOptions
188
+
189
+ ```ts
190
+ export interface AgentOptions {
191
+ /** CLI time limit: milliseconds or ms/s/m duration, at most 60m.
192
+ * Resolves with completionReason: timeout. No default; direct transport only, maxIterations 1. */
193
+ timeout?: string | number;
194
+ task: string;
195
+ workspace?: string;
196
+ /** Validated declaration only; not currently enforced (gate 8 / #442). */
197
+ permissions?: PermissionsSpec;
198
+ cli?: string;
199
+ model?: string;
200
+ /**
201
+ * Directory this agent's CLI is spawned in, relative to the run root — the
202
+ * flow-runner's working directory, and where the CLI runs when this is
203
+ * absent. One flow can therefore drive agents in sibling checkouts. The
204
+ * path must be relative and free of `.`, `..` and empty components, and
205
+ * must name an existing directory inside the run root at dispatch;
206
+ * anything else refuses the step instead of running it somewhere else.
207
+ * An absolute path is accepted when it names a directory inside the run
208
+ * root — it lowers to the same relative declaration — and refused when it
209
+ * escapes. `artifacts` are reported relative to this directory. It is a
210
+ * declaration of where to start, not a sandbox. Not supported with
211
+ * `transport: 'relay'`. See docs/SURFACE.md.
212
+ */
213
+ cwd?: string;
214
+ /**
215
+ * Continue a CLI session instead of starting a new one: an earlier step's
216
+ * `AgentResult.sessionId`. Claude and Codex resume it from their own
217
+ * session store (`~/.claude`, `~/.codex`), so it works only where that
218
+ * store survives — such as a sandbox reused for the same pull request.
219
+ * Other CLIs refuse the step. Not supported with `transport: 'relay'`.
220
+ */
221
+ resume?: string;
222
+ /**
223
+ * Dispatch transport (flows#385). `'direct'` (default) spawns the CLI as a
224
+ * local subprocess. `'relay'` posts to agent-relay so the agent registers
225
+ * as a first-class workspace participant that DMs can steer.
226
+ */
227
+ transport?: 'direct' | 'relay';
228
+ /** Semantic executions allowed when verification rejects output. Default 1. */
229
+ maxIterations?: number;
230
+ /** Additional attempts allowed only after classified transport loss. Default 1. */
231
+ transportRetries?: number;
232
+ /** Appendix A workspace recovery for a transport retry. Default `reset`. */
233
+ recoveryMode?: 'reset' | 'inspect' | 'manual';
234
+ }
235
+ ```
236
+
237
+ ### PermissionsSpec
238
+
239
+ ```ts
240
+ /** Per-step declarations: validated and recorded, not currently enforced (gate 8 / #442).
241
+ * Separate from flow-wide FlowHeader.workspace / tools.fs scopes.
242
+ */
243
+ export interface PermissionsSpec {
244
+ fileGlobs?: string[];
245
+ networkAllowlist?: string[];
246
+ accessPreset?: 'readonly' | 'readwrite';
247
+ }
248
+ ```
249
+
250
+ ### AgentResult
251
+
252
+ ```ts
253
+ export interface AgentResult {
254
+ completionReason: 'success' | 'timeout';
255
+ summary: string;
256
+ /**
257
+ * Files the agent created or changed under its working directory,
258
+ * cwd-relative POSIX paths, sorted — as journaled by the worker that spawned
259
+ * the CLI on the step's `step.completed`, never re-measured later. Empty
260
+ * for the relay transport (the agent ran elsewhere) and for an agent whose
261
+ * final message is a JSON object (that object is the output, unmodified).
262
+ */
263
+ artifacts: string[];
264
+ /**
265
+ * The CLI session this step ran as (Claude's session id, Codex's thread
266
+ * id), when the CLI reported one. Pass it as a later step's `resume` to
267
+ * continue the same conversation.
268
+ */
269
+ sessionId?: string;
270
+ }
271
+ ```
272
+
273
+ ### LlmOptions
274
+
275
+ ```ts
276
+ export interface LlmOptions {
277
+ /** JSON Schema checked before the result is accepted by the journal. */
278
+ output: Record<string, unknown>;
279
+ cli?: string;
280
+ model?: string;
281
+ }
282
+ ```
283
+
284
+ ### DispatchResult
285
+
286
+ ```ts
287
+ /** Durable receipt returned after a statically declared child flow succeeds. */
288
+ export interface DispatchResult {
289
+ /** The child flow's declared name. */
290
+ name: string;
291
+ /** `success`; every other child verdict rejects the dispatch. */
292
+ completionReason: 'success';
293
+ /** The child's journaled completion detail, when it supplied one. */
294
+ completionDetail?: string;
295
+ }
296
+ ```
297
+
298
+ ### DoneOptions
299
+
300
+ ```ts
301
+ /** The optional second argument to {@link Ctx.done}. */
302
+ export interface DoneOptions {
303
+ /** Why the flow reached this verdict; redacted, bounded, and journaled. */
304
+ detail?: string;
305
+ }
306
+ ```
307
+
308
+ ## Completion vocabularies
309
+
310
+ Authored `f.done` verdicts, kernel run outcomes and step outcomes are distinct closed vocabularies.
311
+
312
+ | Vocabulary | Type | Used for | Values |
313
+ | --- | --- | --- | --- |
314
+ | `FLOW_COMPLETION_REASONS` | `FlowCompletionReason` | f.done | `success`, `step_failed`, `canceled`, `budget_exceeded`, `needs_human`, `declined` |
315
+ | `RUN_COMPLETION_REASONS` | `RunCompletionReason` | Kernel run completion | `success`, `step_failed`, `canceled`, `budget_exceeded` |
316
+ | `COMPLETION_REASONS` | `CompletionReason` | Journal step completion | `success`, `verification_failed`, `retries_exhausted`, `lease_expired`, `crashed`, `timeout`, `worker_error`, `budget_exceeded`, `canceled` |
317
+
318
+ ## Gates
319
+
320
+ ```ts
321
+ /** A journal-backed step result with its postfix verification gate. */
322
+ export interface Step<T> extends PromiseLike<T> {
323
+ /**
324
+ * Attach a named data gate to this step's `verification:` field. The gate is
325
+ * lowered by the SDK into a slice-P journal-honest check that survives
326
+ * replay — its shape is data, not code, so covenant 1 (journal-as-truth)
327
+ * holds. See `packages/sdk/src/named-gates.ts` for the enforcement.
328
+ */
329
+ gate(config: NamedGate): Step<T>;
330
+ /**
331
+ * Predicate gate: author code, run once by the runtime after the step
332
+ * completes, on the value the journal handed back. The closure itself is
333
+ * never serialized; its VERDICT is journaled as a lowered `<step>.gate`
334
+ * deterministic step that succeeds or fails, so resume and replay read the
335
+ * recorded verdict and never re-run the function. A false verdict fails the
336
+ * run as `gate_failed`, carrying `because`. `flows check` cannot prove a
337
+ * predicate (docs/SURFACE.md §6); use a `NamedGate` when the check must be
338
+ * inspectable before execution. One `.gate()` per step.
339
+ */
340
+ gate(predicate: (value: T) => boolean, because?: string): Step<T>;
341
+ }
342
+ ```
343
+
344
+ Named gate members are shown even when they are not individually exported from the package.
345
+
346
+ ```ts
347
+ /**
348
+ * Slice-P named data gates the authored surface can attach postfix via
349
+ * `.gate(config)`. The SDK's named-gate lowering enforces these exactly (see
350
+ * `packages/sdk/src/named-gates.ts`); the shapes here are the surface-visible
351
+ * subset kept in sync with `NamedDataGate` in the SDK spec.
352
+ */
353
+ export type NamedGate =
354
+ | ReferencesInputNamedGate
355
+ | SubprocessNamedGate
356
+ | WordCountBoundsNamedGate
357
+ | RegexMatchNamedGate
358
+ | ArtifactExistsNamedGate;
359
+ ```
360
+
361
+ ```ts
362
+ export interface ReferencesInputNamedGate {
363
+ type: 'references_input';
364
+ input_key: string;
365
+ in_output_at?: Array<string | number>;
366
+ }
367
+ ```
368
+
369
+ ```ts
370
+ export interface SubprocessNamedGate {
371
+ type: 'subprocess_gate';
372
+ command: string;
373
+ from_output?: Array<string | number>;
374
+ }
375
+ ```
376
+
377
+ ```ts
378
+ export interface WordCountBoundsNamedGate {
379
+ type: 'word_count_bounds';
380
+ min?: number;
381
+ max?: number;
382
+ }
383
+ ```
384
+
385
+ ```ts
386
+ export interface RegexMatchNamedGate {
387
+ type: 'regex_match';
388
+ pattern: string;
389
+ /** Only i, m, and s; evaluated by a non-backtracking RE2 engine. */
390
+ flags?: string;
391
+ in_output_at?: Array<string | number>;
392
+ }
393
+ ```
394
+
395
+ ```ts
396
+ /**
397
+ * Passes when the step's journaled `artifacts` lists `path` — a file the
398
+ * agent's worker measured as created or changed under its working directory.
399
+ * The check reads the journal, so replay and resume see the verdict that was
400
+ * recorded, never a fresh look at the disk.
401
+ */
402
+ export interface ArtifactExistsNamedGate {
403
+ type: 'artifact_exists';
404
+ /** Working-directory-relative POSIX path, e.g. `review/security.md`. */
405
+ path: string;
406
+ }
407
+ ```
408
+
409
+ The kernel verification fields are `exit_code`, `output_contains` and `json_schema`. Named gates are data lowered by the SDK. Only a named gate is inspectable before execution; a predicate gate records its verdict at runtime. See [the gate contract](https://github.com/AgentWorkforce/flows/blob/main/docs/SURFACE.md#6-the-gate-contract-and-remaining-open-surface-questions).
410
+
411
+ ## Helper namespaces
412
+
413
+ `Ctx extends Helpers` exposes 50 namespaces. `f.mcp` is an additional context member. `f.slack` is included in Helpers; see [Slack semantics](https://github.com/AgentWorkforce/flows/blob/main/docs/SLACK-HELPER.md). Resource counts describe the pinned adapter catalog, not bespoke helper methods or an assurance of credentials.
414
+
415
+ | Namespace | Type | Pinned adapter resources |
416
+ | --- | --- | --- |
417
+ | `f.airtable` | `AirtableHelper` | None in pinned catalog |
418
+ | `f.asana` | `AsanaHelper` | 3 |
419
+ | `f.azureBlob` | `AzureBlobHelper` | 2 |
420
+ | `f.box` | `BoxHelper` | 2 |
421
+ | `f.calendly` | `CalendlyHelper` | 3 |
422
+ | `f.clickup` | `ClickupHelper` | 4 |
423
+ | `f.cloudflare` | `CloudflareHelper` | 13 |
424
+ | `f.confluence` | `ConfluenceHelper` | 1 |
425
+ | `f.daytona` | `DaytonaHelper` | 1 |
426
+ | `f.dockerHub` | `DockerHubHelper` | None in pinned catalog |
427
+ | `f.dropbox` | `DropboxHelper` | 5 |
428
+ | `f.fathom` | `FathomHelper` | None in pinned catalog |
429
+ | `f.gcp` | `GcpHelper` | None in pinned catalog |
430
+ | `f.gcs` | `GcsHelper` | 2 |
431
+ | `f.github` | `GithubHelper` | 8 |
432
+ | `f.gitlab` | `GitlabHelper` | 7 |
433
+ | `f.gmail` | `GmailHelper` | 3 |
434
+ | `f.googleCalendar` | `GoogleCalendarHelper` | 1 |
435
+ | `f.googleDrive` | `GoogleDriveHelper` | 2 |
436
+ | `f.granola` | `GranolaHelper` | 2 |
437
+ | `f.hubspot` | `HubspotHelper` | 4 |
438
+ | `f.intercom` | `IntercomHelper` | 3 |
439
+ | `f.jira` | `JiraHelper` | 4 |
440
+ | `f.linear` | `LinearHelper` | 6 |
441
+ | `f.mailgun` | `MailgunHelper` | 3 |
442
+ | `f.mixpanel` | `MixpanelHelper` | 3 |
443
+ | `f.neon` | `NeonHelper` | None in pinned catalog |
444
+ | `f.notion` | `NotionHelper` | 4 |
445
+ | `f.onedrive` | `OnedriveHelper` | 2 |
446
+ | `f.pipedrive` | `PipedriveHelper` | 4 |
447
+ | `f.postgres` | `PostgresHelper` | 2 |
448
+ | `f.posthog` | `PosthogHelper` | None in pinned catalog |
449
+ | `f.ramp` | `RampHelper` | 19 |
450
+ | `f.recall` | `RecallHelper` | 1 |
451
+ | `f.reddit` | `RedditHelper` | 2 |
452
+ | `f.redis` | `RedisHelper` | 2 |
453
+ | `f.s3` | `S3Helper` | 2 |
454
+ | `f.salesforce` | `SalesforceHelper` | 5 |
455
+ | `f.segment` | `SegmentHelper` | None in pinned catalog |
456
+ | `f.sendgrid` | `SendgridHelper` | 2 |
457
+ | `f.sharepoint` | `SharepointHelper` | 2 |
458
+ | `f.shopify` | `ShopifyHelper` | None in pinned catalog |
459
+ | `f.shortcut` | `ShortcutHelper` | 9 |
460
+ | `f.slack` | `SlackHelper` | 4 |
461
+ | `f.stripe` | `StripeHelper` | 0 |
462
+ | `f.teams` | `TeamsHelper` | 2 |
463
+ | `f.telegram` | `TelegramHelper` | 6 |
464
+ | `f.webhookServer` | `WebhookServerHelper` | None in pinned catalog |
465
+ | `f.x` | `XHelper` | None in pinned catalog |
466
+ | `f.zendesk` | `ZendeskHelper` | 3 |
467
+
468
+ ## Triggers
469
+
470
+ Sources for `flow(name, { on }, body)` and `f.on(source, options)`.
471
+
472
+ ```ts
473
+ /** Plain, immutable data. Constructing a source opens no receiver. */
474
+ export function webhook(name: string, filter?: WebhookFilter): WebhookTriggerSource;
475
+ ```
476
+
477
+ ```ts
478
+ export const schedule: Readonly<{
479
+ /** A five-field cron, evaluated in `tz` (default UTC). */
480
+ cron(expression: string, options?: ScheduleCronOptions): ScheduleTriggerSource;
481
+ /** A fixed interval: `every("5m")`, `every("2h")`. Units s, m, h, d. */
482
+ every(interval: string): ScheduleTriggerSource;
483
+ }>;
484
+ ```
485
+
486
+ ### Provider triggers
487
+
488
+ Exported from the package root (`import { github } from '@relayflows/surface'`). Each call returns `ProviderTriggerSource<Provider, Event>` for the listed provider and event; pass it to `flow(...).on(...)` or `f.on(...)`.
489
+
490
+ | Call | Provider | Event |
491
+ | --- | --- | --- |
492
+ | `airtable.base_create(filter?: WebhookFilter)` | `airtable` | `base.create` |
493
+ | `airtable.base_delete(filter?: WebhookFilter)` | `airtable` | `base.delete` |
494
+ | `airtable.base_update(filter?: WebhookFilter)` | `airtable` | `base.update` |
495
+ | `airtable.record_create(filter?: WebhookFilter)` | `airtable` | `record.create` |
496
+ | `airtable.record_delete(filter?: WebhookFilter)` | `airtable` | `record.delete` |
497
+ | `airtable.record_update(filter?: WebhookFilter)` | `airtable` | `record.update` |
498
+ | `airtable.table_create(filter?: WebhookFilter)` | `airtable` | `table.create` |
499
+ | `airtable.table_delete(filter?: WebhookFilter)` | `airtable` | `table.delete` |
500
+ | `airtable.table_update(filter?: WebhookFilter)` | `airtable` | `table.update` |
501
+ | `asana.project_added(filter?: WebhookFilter)` | `asana` | `project.added` |
502
+ | `asana.project_changed(filter?: WebhookFilter)` | `asana` | `project.changed` |
503
+ | `asana.project_deleted(filter?: WebhookFilter)` | `asana` | `project.deleted` |
504
+ | `asana.project_removed(filter?: WebhookFilter)` | `asana` | `project.removed` |
505
+ | `asana.section_added(filter?: WebhookFilter)` | `asana` | `section.added` |
506
+ | `asana.section_changed(filter?: WebhookFilter)` | `asana` | `section.changed` |
507
+ | `asana.section_deleted(filter?: WebhookFilter)` | `asana` | `section.deleted` |
508
+ | `asana.section_removed(filter?: WebhookFilter)` | `asana` | `section.removed` |
509
+ | `asana.task_added(filter?: WebhookFilter)` | `asana` | `task.added` |
510
+ | `asana.task_changed(filter?: WebhookFilter)` | `asana` | `task.changed` |
511
+ | `asana.task_completed(filter?: WebhookFilter)` | `asana` | `task.completed` |
512
+ | `asana.task_deleted(filter?: WebhookFilter)` | `asana` | `task.deleted` |
513
+ | `asana.task_removed(filter?: WebhookFilter)` | `asana` | `task.removed` |
514
+ | `asana.workspace_added(filter?: WebhookFilter)` | `asana` | `workspace.added` |
515
+ | `asana.workspace_changed(filter?: WebhookFilter)` | `asana` | `workspace.changed` |
516
+ | `asana.workspace_deleted(filter?: WebhookFilter)` | `asana` | `workspace.deleted` |
517
+ | `asana.workspace_removed(filter?: WebhookFilter)` | `asana` | `workspace.removed` |
518
+ | `azure_blob.file_created(filter?: WebhookFilter)` | `azure-blob` | `file.created` |
519
+ | `azure_blob.file_deleted(filter?: WebhookFilter)` | `azure-blob` | `file.deleted` |
520
+ | `azure_blob.file_updated(filter?: WebhookFilter)` | `azure-blob` | `file.updated` |
521
+ | `box.file_created(filter?: WebhookFilter)` | `box` | `file.created` |
522
+ | `box.file_deleted(filter?: WebhookFilter)` | `box` | `file.deleted` |
523
+ | `box.file_updated(filter?: WebhookFilter)` | `box` | `file.updated` |
524
+ | `calendly.event_type_canceled(filter?: WebhookFilter)` | `calendly` | `event_type.canceled` |
525
+ | `calendly.event_type_created(filter?: WebhookFilter)` | `calendly` | `event_type.created` |
526
+ | `calendly.event_type_deleted(filter?: WebhookFilter)` | `calendly` | `event_type.deleted` |
527
+ | `calendly.event_type_updated(filter?: WebhookFilter)` | `calendly` | `event_type.updated` |
528
+ | `calendly.invitee_canceled(filter?: WebhookFilter)` | `calendly` | `invitee.canceled` |
529
+ | `calendly.invitee_created(filter?: WebhookFilter)` | `calendly` | `invitee.created` |
530
+ | `calendly.invitee_deleted(filter?: WebhookFilter)` | `calendly` | `invitee.deleted` |
531
+ | `calendly.invitee_updated(filter?: WebhookFilter)` | `calendly` | `invitee.updated` |
532
+ | `calendly.scheduled_event_canceled(filter?: WebhookFilter)` | `calendly` | `scheduled_event.canceled` |
533
+ | `calendly.scheduled_event_created(filter?: WebhookFilter)` | `calendly` | `scheduled_event.created` |
534
+ | `calendly.scheduled_event_deleted(filter?: WebhookFilter)` | `calendly` | `scheduled_event.deleted` |
535
+ | `calendly.scheduled_event_updated(filter?: WebhookFilter)` | `calendly` | `scheduled_event.updated` |
536
+ | `clickup.folder_created(filter?: WebhookFilter)` | `clickup` | `folder.created` |
537
+ | `clickup.folder_deleted(filter?: WebhookFilter)` | `clickup` | `folder.deleted` |
538
+ | `clickup.folder_updated(filter?: WebhookFilter)` | `clickup` | `folder.updated` |
539
+ | `clickup.list_created(filter?: WebhookFilter)` | `clickup` | `list.created` |
540
+ | `clickup.list_deleted(filter?: WebhookFilter)` | `clickup` | `list.deleted` |
541
+ | `clickup.list_updated(filter?: WebhookFilter)` | `clickup` | `list.updated` |
542
+ | `clickup.space_created(filter?: WebhookFilter)` | `clickup` | `space.created` |
543
+ | `clickup.space_deleted(filter?: WebhookFilter)` | `clickup` | `space.deleted` |
544
+ | `clickup.space_updated(filter?: WebhookFilter)` | `clickup` | `space.updated` |
545
+ | `clickup.task_created(filter?: WebhookFilter)` | `clickup` | `task.created` |
546
+ | `clickup.task_deleted(filter?: WebhookFilter)` | `clickup` | `task.deleted` |
547
+ | `clickup.task_updated(filter?: WebhookFilter)` | `clickup` | `task.updated` |
548
+ | `cloudflare.access_custom_certificate_expiration_type(filter?: WebhookFilter)` | `cloudflare` | `access_custom_certificate_expiration_type` |
549
+ | `cloudflare.advanced_http_alert_error(filter?: WebhookFilter)` | `cloudflare` | `advanced_http_alert_error` |
550
+ | `cloudflare.billing_usage_alert(filter?: WebhookFilter)` | `cloudflare` | `billing_usage_alert` |
551
+ | `cloudflare.dedicated_ssl_certificate_event_type(filter?: WebhookFilter)` | `cloudflare` | `dedicated_ssl_certificate_event_type` |
552
+ | `cloudflare.health_check_status_notification(filter?: WebhookFilter)` | `cloudflare` | `health_check_status_notification` |
553
+ | `cloudflare.http_alert_origin_error(filter?: WebhookFilter)` | `cloudflare` | `http_alert_origin_error` |
554
+ | `cloudflare.workers_alert(filter?: WebhookFilter)` | `cloudflare` | `workers_alert` |
555
+ | `cloudflare.workers_observability_alert(filter?: WebhookFilter)` | `cloudflare` | `workers_observability_alert` |
556
+ | `confluence.page_created(filter?: WebhookFilter)` | `confluence` | `page.created` |
557
+ | `confluence.page_deleted(filter?: WebhookFilter)` | `confluence` | `page.deleted` |
558
+ | `confluence.page_updated(filter?: WebhookFilter)` | `confluence` | `page.updated` |
559
+ | `confluence.space_created(filter?: WebhookFilter)` | `confluence` | `space.created` |
560
+ | `confluence.space_deleted(filter?: WebhookFilter)` | `confluence` | `space.deleted` |
561
+ | `confluence.space_updated(filter?: WebhookFilter)` | `confluence` | `space.updated` |
562
+ | `daytona.sandbox_created(filter?: WebhookFilter)` | `daytona` | `sandbox.created` |
563
+ | `daytona.sandbox_state_updated(filter?: WebhookFilter)` | `daytona` | `sandbox.state.updated` |
564
+ | `daytona.snapshot_created(filter?: WebhookFilter)` | `daytona` | `snapshot.created` |
565
+ | `daytona.snapshot_removed(filter?: WebhookFilter)` | `daytona` | `snapshot.removed` |
566
+ | `daytona.snapshot_state_updated(filter?: WebhookFilter)` | `daytona` | `snapshot.state.updated` |
567
+ | `daytona.volume_created(filter?: WebhookFilter)` | `daytona` | `volume.created` |
568
+ | `daytona.volume_state_updated(filter?: WebhookFilter)` | `daytona` | `volume.state.updated` |
569
+ | `docker_hub.push(filter?: WebhookFilter)` | `docker-hub` | `push` |
570
+ | `dropbox.file_changed(filter?: WebhookFilter)` | `dropbox` | `file.changed` |
571
+ | `fathom.new_meeting_content_ready(filter?: WebhookFilter)` | `fathom` | `new-meeting-content-ready` |
572
+ | `gcp.billing_budget_alert(filter?: WebhookFilter)` | `gcp` | `billing.budget.alert` |
573
+ | `gcp.cloud_run_service_created(filter?: WebhookFilter)` | `gcp` | `cloud-run.service.created` |
574
+ | `gcp.cloud_run_service_deleted(filter?: WebhookFilter)` | `gcp` | `cloud-run.service.deleted` |
575
+ | `gcp.cloud_run_service_updated(filter?: WebhookFilter)` | `gcp` | `cloud-run.service.updated` |
576
+ | `gcp.error_reporting_event_logged(filter?: WebhookFilter)` | `gcp` | `error-reporting.event.logged` |
577
+ | `gcp.error_reporting_group_opened(filter?: WebhookFilter)` | `gcp` | `error-reporting.group.opened` |
578
+ | `gcp.error_reporting_group_reopened(filter?: WebhookFilter)` | `gcp` | `error-reporting.group.reopened` |
579
+ | `gcp.monitoring_incident_closed(filter?: WebhookFilter)` | `gcp` | `monitoring.incident.closed` |
580
+ | `gcp.monitoring_incident_open(filter?: WebhookFilter)` | `gcp` | `monitoring.incident.open` |
581
+ | `gcs.file_created(filter?: WebhookFilter)` | `gcs` | `file.created` |
582
+ | `gcs.file_deleted(filter?: WebhookFilter)` | `gcs` | `file.deleted` |
583
+ | `gcs.file_updated(filter?: WebhookFilter)` | `gcs` | `file.updated` |
584
+ | `github.check_run(action?: string)` | `github` | `check_run` |
585
+ | `github.check_run_completed(filter?: WebhookFilter)` | `github` | `check_run.completed` |
586
+ | `github.deployment_status_created(filter?: WebhookFilter)` | `github` | `deployment_status.created` |
587
+ | `github.issue_comment(action?: string)` | `github` | `issue_comment` |
588
+ | `github.issue_comment_created(filter?: WebhookFilter)` | `github` | `issue_comment.created` |
589
+ | `github.issues(filter?: WebhookFilter)` | `github` | `issues` |
590
+ | `github.issues_edited(filter?: WebhookFilter)` | `github` | `issues.edited` |
591
+ | `github.issues_labeled(filter?: WebhookFilter)` | `github` | `issues.labeled` |
592
+ | `github.issues_reopened(filter?: WebhookFilter)` | `github` | `issues.reopened` |
593
+ | `github.issues_unlabeled(filter?: WebhookFilter)` | `github` | `issues.unlabeled` |
594
+ | `github.pull_request(action?: string)` | `github` | `pull_request` |
595
+ | `github.pull_request_review(filter?: WebhookFilter)` | `github` | `pull_request_review` |
596
+ | `github.pull_request_review_comment_created(filter?: WebhookFilter)` | `github` | `pull_request_review_comment.created` |
597
+ | `github.pull_request_review_thread_resolved(filter?: WebhookFilter)` | `github` | `pull_request_review_thread.resolved` |
598
+ | `github.pull_request_review_dismissed(filter?: WebhookFilter)` | `github` | `pull_request_review.dismissed` |
599
+ | `github.pull_request_review_edited(filter?: WebhookFilter)` | `github` | `pull_request_review.edited` |
600
+ | `github.pull_request_review_submitted(filter?: WebhookFilter)` | `github` | `pull_request_review.submitted` |
601
+ | `github.pull_request_edited(filter?: WebhookFilter)` | `github` | `pull_request.edited` |
602
+ | `github.pull_request_reopened(filter?: WebhookFilter)` | `github` | `pull_request.reopened` |
603
+ | `github.push(filter?: WebhookFilter)` | `github` | `push` |
604
+ | `github.status(filter?: WebhookFilter)` | `github` | `status` |
605
+ | `github.issues_closed(filter?: WebhookFilter)` | `github` | `issues.closed` |
606
+ | `github.issues_opened(filter?: WebhookFilter)` | `github` | `issues.opened` |
607
+ | `github.pull_request_closed(filter?: WebhookFilter)` | `github` | `pull_request.closed` |
608
+ | `github.pull_request_labeled(filter?: WebhookFilter)` | `github` | `pull_request.labeled` |
609
+ | `github.pull_request_opened(filter?: WebhookFilter)` | `github` | `pull_request.opened` |
610
+ | `github.pull_request_ready_for_review(filter?: WebhookFilter)` | `github` | `pull_request.ready_for_review` |
611
+ | `github.pull_request_synchronize(filter?: WebhookFilter)` | `github` | `pull_request.synchronize` |
612
+ | `github.pull_request_unlabeled(filter?: WebhookFilter)` | `github` | `pull_request.unlabeled` |
613
+ | `gitlab.build(filter?: WebhookFilter)` | `gitlab` | `build` |
614
+ | `gitlab.deployment(filter?: WebhookFilter)` | `gitlab` | `deployment` |
615
+ | `gitlab.issue(filter?: WebhookFilter)` | `gitlab` | `issue` |
616
+ | `gitlab.merge_request(filter?: WebhookFilter)` | `gitlab` | `merge_request` |
617
+ | `gitlab.note(filter?: WebhookFilter)` | `gitlab` | `note` |
618
+ | `gitlab.pipeline(filter?: WebhookFilter)` | `gitlab` | `pipeline` |
619
+ | `gitlab.push(filter?: WebhookFilter)` | `gitlab` | `push` |
620
+ | `gitlab.tag_push(filter?: WebhookFilter)` | `gitlab` | `tag_push` |
621
+ | `gitlab.build_canceled(filter?: WebhookFilter)` | `gitlab` | `build.canceled` |
622
+ | `gitlab.build_created(filter?: WebhookFilter)` | `gitlab` | `build.created` |
623
+ | `gitlab.build_failed(filter?: WebhookFilter)` | `gitlab` | `build.failed` |
624
+ | `gitlab.build_manual(filter?: WebhookFilter)` | `gitlab` | `build.manual` |
625
+ | `gitlab.build_pending(filter?: WebhookFilter)` | `gitlab` | `build.pending` |
626
+ | `gitlab.build_running(filter?: WebhookFilter)` | `gitlab` | `build.running` |
627
+ | `gitlab.build_skipped(filter?: WebhookFilter)` | `gitlab` | `build.skipped` |
628
+ | `gitlab.build_success(filter?: WebhookFilter)` | `gitlab` | `build.success` |
629
+ | `gitlab.deployment_canceled(filter?: WebhookFilter)` | `gitlab` | `deployment.canceled` |
630
+ | `gitlab.deployment_created(filter?: WebhookFilter)` | `gitlab` | `deployment.created` |
631
+ | `gitlab.deployment_failed(filter?: WebhookFilter)` | `gitlab` | `deployment.failed` |
632
+ | `gitlab.deployment_running(filter?: WebhookFilter)` | `gitlab` | `deployment.running` |
633
+ | `gitlab.deployment_success(filter?: WebhookFilter)` | `gitlab` | `deployment.success` |
634
+ | `gitlab.issue_close(filter?: WebhookFilter)` | `gitlab` | `issue.close` |
635
+ | `gitlab.issue_open(filter?: WebhookFilter)` | `gitlab` | `issue.open` |
636
+ | `gitlab.issue_reopen(filter?: WebhookFilter)` | `gitlab` | `issue.reopen` |
637
+ | `gitlab.issue_update(filter?: WebhookFilter)` | `gitlab` | `issue.update` |
638
+ | `gitlab.job_canceled(filter?: WebhookFilter)` | `gitlab` | `job.canceled` |
639
+ | `gitlab.job_created(filter?: WebhookFilter)` | `gitlab` | `job.created` |
640
+ | `gitlab.job_failed(filter?: WebhookFilter)` | `gitlab` | `job.failed` |
641
+ | `gitlab.job_manual(filter?: WebhookFilter)` | `gitlab` | `job.manual` |
642
+ | `gitlab.job_pending(filter?: WebhookFilter)` | `gitlab` | `job.pending` |
643
+ | `gitlab.job_running(filter?: WebhookFilter)` | `gitlab` | `job.running` |
644
+ | `gitlab.job_skipped(filter?: WebhookFilter)` | `gitlab` | `job.skipped` |
645
+ | `gitlab.job_success(filter?: WebhookFilter)` | `gitlab` | `job.success` |
646
+ | `gitlab.merge_request_approved(filter?: WebhookFilter)` | `gitlab` | `merge_request.approved` |
647
+ | `gitlab.merge_request_close(filter?: WebhookFilter)` | `gitlab` | `merge_request.close` |
648
+ | `gitlab.merge_request_merge(filter?: WebhookFilter)` | `gitlab` | `merge_request.merge` |
649
+ | `gitlab.merge_request_open(filter?: WebhookFilter)` | `gitlab` | `merge_request.open` |
650
+ | `gitlab.merge_request_reopen(filter?: WebhookFilter)` | `gitlab` | `merge_request.reopen` |
651
+ | `gitlab.merge_request_unapproved(filter?: WebhookFilter)` | `gitlab` | `merge_request.unapproved` |
652
+ | `gitlab.merge_request_update(filter?: WebhookFilter)` | `gitlab` | `merge_request.update` |
653
+ | `gitlab.note_Commit(filter?: WebhookFilter)` | `gitlab` | `note.Commit` |
654
+ | `gitlab.note_Issue(filter?: WebhookFilter)` | `gitlab` | `note.Issue` |
655
+ | `gitlab.note_MergeRequest(filter?: WebhookFilter)` | `gitlab` | `note.MergeRequest` |
656
+ | `gitlab.note_Snippet(filter?: WebhookFilter)` | `gitlab` | `note.Snippet` |
657
+ | `gitlab.pipeline_canceled(filter?: WebhookFilter)` | `gitlab` | `pipeline.canceled` |
658
+ | `gitlab.pipeline_created(filter?: WebhookFilter)` | `gitlab` | `pipeline.created` |
659
+ | `gitlab.pipeline_failed(filter?: WebhookFilter)` | `gitlab` | `pipeline.failed` |
660
+ | `gitlab.pipeline_manual(filter?: WebhookFilter)` | `gitlab` | `pipeline.manual` |
661
+ | `gitlab.pipeline_pending(filter?: WebhookFilter)` | `gitlab` | `pipeline.pending` |
662
+ | `gitlab.pipeline_running(filter?: WebhookFilter)` | `gitlab` | `pipeline.running` |
663
+ | `gitlab.pipeline_skipped(filter?: WebhookFilter)` | `gitlab` | `pipeline.skipped` |
664
+ | `gitlab.pipeline_success(filter?: WebhookFilter)` | `gitlab` | `pipeline.success` |
665
+ | `gitlab.pipeline_waiting_for_resource(filter?: WebhookFilter)` | `gitlab` | `pipeline.waiting_for_resource` |
666
+ | `gmail.file_created(filter?: WebhookFilter)` | `gmail` | `file.created` |
667
+ | `gmail.file_deleted(filter?: WebhookFilter)` | `gmail` | `file.deleted` |
668
+ | `gmail.file_updated(filter?: WebhookFilter)` | `gmail` | `file.updated` |
669
+ | `google_calendar.calendar_exists(filter?: WebhookFilter)` | `google-calendar` | `calendar.exists` |
670
+ | `google_calendar.calendar_not_exists(filter?: WebhookFilter)` | `google-calendar` | `calendar.not_exists` |
671
+ | `google_calendar.calendar_sync(filter?: WebhookFilter)` | `google-calendar` | `calendar.sync` |
672
+ | `google_drive.file_created(filter?: WebhookFilter)` | `google-drive` | `file.created` |
673
+ | `google_drive.file_deleted(filter?: WebhookFilter)` | `google-drive` | `file.deleted` |
674
+ | `google_drive.file_updated(filter?: WebhookFilter)` | `google-drive` | `file.updated` |
675
+ | `granola.file_created(filter?: WebhookFilter)` | `granola` | `file.created` |
676
+ | `granola.note_access_granted(filter?: WebhookFilter)` | `granola` | `note.access_granted` |
677
+ | `granola.note_edited(filter?: WebhookFilter)` | `granola` | `note.edited` |
678
+ | `granola.note_generated(filter?: WebhookFilter)` | `granola` | `note.generated` |
679
+ | `hubspot.company_associationChange(filter?: WebhookFilter)` | `hubspot` | `company.associationChange` |
680
+ | `hubspot.company_created(filter?: WebhookFilter)` | `hubspot` | `company.created` |
681
+ | `hubspot.company_deleted(filter?: WebhookFilter)` | `hubspot` | `company.deleted` |
682
+ | `hubspot.company_merged(filter?: WebhookFilter)` | `hubspot` | `company.merged` |
683
+ | `hubspot.company_propertyChange(filter?: WebhookFilter)` | `hubspot` | `company.propertyChange` |
684
+ | `hubspot.contact_associationChange(filter?: WebhookFilter)` | `hubspot` | `contact.associationChange` |
685
+ | `hubspot.contact_created(filter?: WebhookFilter)` | `hubspot` | `contact.created` |
686
+ | `hubspot.contact_deleted(filter?: WebhookFilter)` | `hubspot` | `contact.deleted` |
687
+ | `hubspot.contact_merged(filter?: WebhookFilter)` | `hubspot` | `contact.merged` |
688
+ | `hubspot.contact_propertyChange(filter?: WebhookFilter)` | `hubspot` | `contact.propertyChange` |
689
+ | `hubspot.deal_associationChange(filter?: WebhookFilter)` | `hubspot` | `deal.associationChange` |
690
+ | `hubspot.deal_created(filter?: WebhookFilter)` | `hubspot` | `deal.created` |
691
+ | `hubspot.deal_deleted(filter?: WebhookFilter)` | `hubspot` | `deal.deleted` |
692
+ | `hubspot.deal_merged(filter?: WebhookFilter)` | `hubspot` | `deal.merged` |
693
+ | `hubspot.deal_propertyChange(filter?: WebhookFilter)` | `hubspot` | `deal.propertyChange` |
694
+ | `hubspot.ticket_associationChange(filter?: WebhookFilter)` | `hubspot` | `ticket.associationChange` |
695
+ | `hubspot.ticket_created(filter?: WebhookFilter)` | `hubspot` | `ticket.created` |
696
+ | `hubspot.ticket_deleted(filter?: WebhookFilter)` | `hubspot` | `ticket.deleted` |
697
+ | `hubspot.ticket_merged(filter?: WebhookFilter)` | `hubspot` | `ticket.merged` |
698
+ | `hubspot.ticket_propertyChange(filter?: WebhookFilter)` | `hubspot` | `ticket.propertyChange` |
699
+ | `intercom.company_archived(filter?: WebhookFilter)` | `intercom` | `company.archived` |
700
+ | `intercom.company_closed(filter?: WebhookFilter)` | `intercom` | `company.closed` |
701
+ | `intercom.company_created(filter?: WebhookFilter)` | `intercom` | `company.created` |
702
+ | `intercom.company_deleted(filter?: WebhookFilter)` | `intercom` | `company.deleted` |
703
+ | `intercom.company_reopened(filter?: WebhookFilter)` | `intercom` | `company.reopened` |
704
+ | `intercom.company_updated(filter?: WebhookFilter)` | `intercom` | `company.updated` |
705
+ | `intercom.contact_archived(filter?: WebhookFilter)` | `intercom` | `contact.archived` |
706
+ | `intercom.contact_closed(filter?: WebhookFilter)` | `intercom` | `contact.closed` |
707
+ | `intercom.contact_created(filter?: WebhookFilter)` | `intercom` | `contact.created` |
708
+ | `intercom.contact_deleted(filter?: WebhookFilter)` | `intercom` | `contact.deleted` |
709
+ | `intercom.contact_reopened(filter?: WebhookFilter)` | `intercom` | `contact.reopened` |
710
+ | `intercom.contact_updated(filter?: WebhookFilter)` | `intercom` | `contact.updated` |
711
+ | `intercom.conversation_archived(filter?: WebhookFilter)` | `intercom` | `conversation.archived` |
712
+ | `intercom.conversation_closed(filter?: WebhookFilter)` | `intercom` | `conversation.closed` |
713
+ | `intercom.conversation_created(filter?: WebhookFilter)` | `intercom` | `conversation.created` |
714
+ | `intercom.conversation_deleted(filter?: WebhookFilter)` | `intercom` | `conversation.deleted` |
715
+ | `intercom.conversation_reopened(filter?: WebhookFilter)` | `intercom` | `conversation.reopened` |
716
+ | `intercom.conversation_updated(filter?: WebhookFilter)` | `intercom` | `conversation.updated` |
717
+ | `jira.comment_created(filter?: WebhookFilter)` | `jira` | `comment.created` |
718
+ | `jira.comment_deleted(filter?: WebhookFilter)` | `jira` | `comment.deleted` |
719
+ | `jira.comment_updated(filter?: WebhookFilter)` | `jira` | `comment.updated` |
720
+ | `jira.issue_created(filter?: WebhookFilter)` | `jira` | `issue.created` |
721
+ | `jira.issue_deleted(filter?: WebhookFilter)` | `jira` | `issue.deleted` |
722
+ | `jira.issue_updated(filter?: WebhookFilter)` | `jira` | `issue.updated` |
723
+ | `jira.project_created(filter?: WebhookFilter)` | `jira` | `project.created` |
724
+ | `jira.project_deleted(filter?: WebhookFilter)` | `jira` | `project.deleted` |
725
+ | `jira.project_updated(filter?: WebhookFilter)` | `jira` | `project.updated` |
726
+ | `jira.sprint_created(filter?: WebhookFilter)` | `jira` | `sprint.created` |
727
+ | `jira.sprint_deleted(filter?: WebhookFilter)` | `jira` | `sprint.deleted` |
728
+ | `jira.sprint_updated(filter?: WebhookFilter)` | `jira` | `sprint.updated` |
729
+ | `linear.AgentSessionEvent_created(filter?: WebhookFilter)` | `linear` | `AgentSessionEvent.created` |
730
+ | `linear.AgentSessionEvent_prompted(filter?: WebhookFilter)` | `linear` | `AgentSessionEvent.prompted` |
731
+ | `linear.AppUserNotification_issueAssignedToYou(filter?: WebhookFilter)` | `linear` | `AppUserNotification.issueAssignedToYou` |
732
+ | `linear.AppUserNotification_issueCommentMention(filter?: WebhookFilter)` | `linear` | `AppUserNotification.issueCommentMention` |
733
+ | `linear.AppUserNotification_issueCommentReaction(filter?: WebhookFilter)` | `linear` | `AppUserNotification.issueCommentReaction` |
734
+ | `linear.AppUserNotification_issueEmojiReaction(filter?: WebhookFilter)` | `linear` | `AppUserNotification.issueEmojiReaction` |
735
+ | `linear.AppUserNotification_issueMention(filter?: WebhookFilter)` | `linear` | `AppUserNotification.issueMention` |
736
+ | `linear.AppUserNotification_issueNewComment(filter?: WebhookFilter)` | `linear` | `AppUserNotification.issueNewComment` |
737
+ | `linear.AppUserNotification_issueStatusChanged(filter?: WebhookFilter)` | `linear` | `AppUserNotification.issueStatusChanged` |
738
+ | `linear.AppUserNotification_issueUnassignedFromYou(filter?: WebhookFilter)` | `linear` | `AppUserNotification.issueUnassignedFromYou` |
739
+ | `linear.comment_create(filter?: WebhookFilter)` | `linear` | `comment.create` |
740
+ | `linear.comment_remove(filter?: WebhookFilter)` | `linear` | `comment.remove` |
741
+ | `linear.comment_update(filter?: WebhookFilter)` | `linear` | `comment.update` |
742
+ | `linear.cycle_create(filter?: WebhookFilter)` | `linear` | `cycle.create` |
743
+ | `linear.cycle_remove(filter?: WebhookFilter)` | `linear` | `cycle.remove` |
744
+ | `linear.cycle_update(filter?: WebhookFilter)` | `linear` | `cycle.update` |
745
+ | `linear.issue_create(filter?: WebhookFilter)` | `linear` | `issue.create` |
746
+ | `linear.issue_remove(filter?: WebhookFilter)` | `linear` | `issue.remove` |
747
+ | `linear.issue_update(filter?: WebhookFilter)` | `linear` | `issue.update` |
748
+ | `linear.label_create(filter?: WebhookFilter)` | `linear` | `label.create` |
749
+ | `linear.label_remove(filter?: WebhookFilter)` | `linear` | `label.remove` |
750
+ | `linear.label_update(filter?: WebhookFilter)` | `linear` | `label.update` |
751
+ | `linear.milestone_create(filter?: WebhookFilter)` | `linear` | `milestone.create` |
752
+ | `linear.milestone_remove(filter?: WebhookFilter)` | `linear` | `milestone.remove` |
753
+ | `linear.milestone_update(filter?: WebhookFilter)` | `linear` | `milestone.update` |
754
+ | `linear.OAuthApp_revoked(filter?: WebhookFilter)` | `linear` | `OAuthApp.revoked` |
755
+ | `linear.PermissionChange_teamAccessChanged(filter?: WebhookFilter)` | `linear` | `PermissionChange.teamAccessChanged` |
756
+ | `linear.project_create(filter?: WebhookFilter)` | `linear` | `project.create` |
757
+ | `linear.project_remove(filter?: WebhookFilter)` | `linear` | `project.remove` |
758
+ | `linear.project_update(filter?: WebhookFilter)` | `linear` | `project.update` |
759
+ | `linear.roadmap_create(filter?: WebhookFilter)` | `linear` | `roadmap.create` |
760
+ | `linear.roadmap_remove(filter?: WebhookFilter)` | `linear` | `roadmap.remove` |
761
+ | `linear.roadmap_update(filter?: WebhookFilter)` | `linear` | `roadmap.update` |
762
+ | `mailgun.event_accepted(filter?: WebhookFilter)` | `mailgun` | `event.accepted` |
763
+ | `mailgun.event_clicked(filter?: WebhookFilter)` | `mailgun` | `event.clicked` |
764
+ | `mailgun.event_complained(filter?: WebhookFilter)` | `mailgun` | `event.complained` |
765
+ | `mailgun.event_delivered(filter?: WebhookFilter)` | `mailgun` | `event.delivered` |
766
+ | `mailgun.event_failed(filter?: WebhookFilter)` | `mailgun` | `event.failed` |
767
+ | `mailgun.event_opened(filter?: WebhookFilter)` | `mailgun` | `event.opened` |
768
+ | `mailgun.event_permanent_fail(filter?: WebhookFilter)` | `mailgun` | `event.permanent_fail` |
769
+ | `mailgun.event_stored(filter?: WebhookFilter)` | `mailgun` | `event.stored` |
770
+ | `mailgun.event_unsubscribed(filter?: WebhookFilter)` | `mailgun` | `event.unsubscribed` |
771
+ | `mailgun.list_created(filter?: WebhookFilter)` | `mailgun` | `list.created` |
772
+ | `mailgun.list_updated(filter?: WebhookFilter)` | `mailgun` | `list.updated` |
773
+ | `mailgun.message_accepted(filter?: WebhookFilter)` | `mailgun` | `message.accepted` |
774
+ | `mailgun.message_delivered(filter?: WebhookFilter)` | `mailgun` | `message.delivered` |
775
+ | `mailgun.message_failed(filter?: WebhookFilter)` | `mailgun` | `message.failed` |
776
+ | `mailgun.message_stored(filter?: WebhookFilter)` | `mailgun` | `message.stored` |
777
+ | `mixpanel.cohort_create(filter?: WebhookFilter)` | `mixpanel` | `cohort.create` |
778
+ | `mixpanel.cohort_delete(filter?: WebhookFilter)` | `mixpanel` | `cohort.delete` |
779
+ | `mixpanel.cohort_merge(filter?: WebhookFilter)` | `mixpanel` | `cohort.merge` |
780
+ | `mixpanel.cohort_update(filter?: WebhookFilter)` | `mixpanel` | `cohort.update` |
781
+ | `mixpanel.event_create(filter?: WebhookFilter)` | `mixpanel` | `event.create` |
782
+ | `mixpanel.event_delete(filter?: WebhookFilter)` | `mixpanel` | `event.delete` |
783
+ | `mixpanel.event_merge(filter?: WebhookFilter)` | `mixpanel` | `event.merge` |
784
+ | `mixpanel.event_update(filter?: WebhookFilter)` | `mixpanel` | `event.update` |
785
+ | `mixpanel.profile_create(filter?: WebhookFilter)` | `mixpanel` | `profile.create` |
786
+ | `mixpanel.profile_delete(filter?: WebhookFilter)` | `mixpanel` | `profile.delete` |
787
+ | `mixpanel.profile_merge(filter?: WebhookFilter)` | `mixpanel` | `profile.merge` |
788
+ | `mixpanel.profile_update(filter?: WebhookFilter)` | `mixpanel` | `profile.update` |
789
+ | `neon.advisor_issue_raised(filter?: WebhookFilter)` | `neon` | `advisor.issue_raised` |
790
+ | `neon.endpoint_state_changed(filter?: WebhookFilter)` | `neon` | `endpoint.state_changed` |
791
+ | `neon.operation_cancelled(filter?: WebhookFilter)` | `neon` | `operation.cancelled` |
792
+ | `neon.operation_failed(filter?: WebhookFilter)` | `neon` | `operation.failed` |
793
+ | `neon.operation_succeeded(filter?: WebhookFilter)` | `neon` | `operation.succeeded` |
794
+ | `notion.database_created(filter?: WebhookFilter)` | `notion` | `database.created` |
795
+ | `notion.database_deleted(filter?: WebhookFilter)` | `notion` | `database.deleted` |
796
+ | `notion.database_moved(filter?: WebhookFilter)` | `notion` | `database.moved` |
797
+ | `notion.database_schema_updated(filter?: WebhookFilter)` | `notion` | `database.schema_updated` |
798
+ | `notion.database_undeleted(filter?: WebhookFilter)` | `notion` | `database.undeleted` |
799
+ | `notion.page_content_updated(filter?: WebhookFilter)` | `notion` | `page.content_updated` |
800
+ | `notion.page_created(filter?: WebhookFilter)` | `notion` | `page.created` |
801
+ | `notion.page_deleted(filter?: WebhookFilter)` | `notion` | `page.deleted` |
802
+ | `notion.page_locked(filter?: WebhookFilter)` | `notion` | `page.locked` |
803
+ | `notion.page_moved(filter?: WebhookFilter)` | `notion` | `page.moved` |
804
+ | `notion.page_properties_updated(filter?: WebhookFilter)` | `notion` | `page.properties_updated` |
805
+ | `notion.page_undeleted(filter?: WebhookFilter)` | `notion` | `page.undeleted` |
806
+ | `notion.page_unlocked(filter?: WebhookFilter)` | `notion` | `page.unlocked` |
807
+ | `onedrive.file_created(filter?: WebhookFilter)` | `onedrive` | `file.created` |
808
+ | `onedrive.file_deleted(filter?: WebhookFilter)` | `onedrive` | `file.deleted` |
809
+ | `onedrive.file_updated(filter?: WebhookFilter)` | `onedrive` | `file.updated` |
810
+ | `pipedrive.activity_created(filter?: WebhookFilter)` | `pipedrive` | `activity.created` |
811
+ | `pipedrive.activity_deleted(filter?: WebhookFilter)` | `pipedrive` | `activity.deleted` |
812
+ | `pipedrive.activity_updated(filter?: WebhookFilter)` | `pipedrive` | `activity.updated` |
813
+ | `pipedrive.deal_created(filter?: WebhookFilter)` | `pipedrive` | `deal.created` |
814
+ | `pipedrive.deal_deleted(filter?: WebhookFilter)` | `pipedrive` | `deal.deleted` |
815
+ | `pipedrive.deal_lost(filter?: WebhookFilter)` | `pipedrive` | `deal.lost` |
816
+ | `pipedrive.deal_updated(filter?: WebhookFilter)` | `pipedrive` | `deal.updated` |
817
+ | `pipedrive.deal_won(filter?: WebhookFilter)` | `pipedrive` | `deal.won` |
818
+ | `pipedrive.organization_created(filter?: WebhookFilter)` | `pipedrive` | `organization.created` |
819
+ | `pipedrive.organization_deleted(filter?: WebhookFilter)` | `pipedrive` | `organization.deleted` |
820
+ | `pipedrive.organization_updated(filter?: WebhookFilter)` | `pipedrive` | `organization.updated` |
821
+ | `pipedrive.person_created(filter?: WebhookFilter)` | `pipedrive` | `person.created` |
822
+ | `pipedrive.person_deleted(filter?: WebhookFilter)` | `pipedrive` | `person.deleted` |
823
+ | `pipedrive.person_updated(filter?: WebhookFilter)` | `pipedrive` | `person.updated` |
824
+ | `postgres.file_created(filter?: WebhookFilter)` | `postgres` | `file.created` |
825
+ | `postgres.file_deleted(filter?: WebhookFilter)` | `postgres` | `file.deleted` |
826
+ | `postgres.file_updated(filter?: WebhookFilter)` | `postgres` | `file.updated` |
827
+ | `posthog.posthog_alert_resolved(filter?: WebhookFilter)` | `posthog` | `posthog.alert.resolved` |
828
+ | `posthog.posthog_alert_triggered(filter?: WebhookFilter)` | `posthog` | `posthog.alert.triggered` |
829
+ | `ramp.applications_status_updated(filter?: WebhookFilter)` | `ramp` | `applications.status_updated` |
830
+ | `ramp.bills_approved(filter?: WebhookFilter)` | `ramp` | `bills.approved` |
831
+ | `ramp.bills_archived(filter?: WebhookFilter)` | `ramp` | `bills.archived` |
832
+ | `ramp.bills_created(filter?: WebhookFilter)` | `ramp` | `bills.created` |
833
+ | `ramp.bills_paid(filter?: WebhookFilter)` | `ramp` | `bills.paid` |
834
+ | `ramp.bills_ready_to_sync(filter?: WebhookFilter)` | `ramp` | `bills.ready_to_sync` |
835
+ | `ramp.bills_rejected(filter?: WebhookFilter)` | `ramp` | `bills.rejected` |
836
+ | `ramp.bills_updated(filter?: WebhookFilter)` | `ramp` | `bills.updated` |
837
+ | `ramp.entities_created(filter?: WebhookFilter)` | `ramp` | `entities.created` |
838
+ | `ramp.item_receipts_created(filter?: WebhookFilter)` | `ramp` | `item_receipts.created` |
839
+ | `ramp.payments_updated(filter?: WebhookFilter)` | `ramp` | `payments.updated` |
840
+ | `ramp.purchase_orders_archived(filter?: WebhookFilter)` | `ramp` | `purchase_orders.archived` |
841
+ | `ramp.purchase_orders_created(filter?: WebhookFilter)` | `ramp` | `purchase_orders.created` |
842
+ | `ramp.purchase_orders_updated(filter?: WebhookFilter)` | `ramp` | `purchase_orders.updated` |
843
+ | `ramp.reimbursements_batch_payment_reimbursed(filter?: WebhookFilter)` | `ramp` | `reimbursements.batch_payment_reimbursed` |
844
+ | `ramp.reimbursements_ready_for_review(filter?: WebhookFilter)` | `ramp` | `reimbursements.ready_for_review` |
845
+ | `ramp.reimbursements_ready_to_sync(filter?: WebhookFilter)` | `ramp` | `reimbursements.ready_to_sync` |
846
+ | `ramp.reimbursements_sync_requested(filter?: WebhookFilter)` | `ramp` | `reimbursements.sync_requested` |
847
+ | `ramp.spend_requests_comment_created(filter?: WebhookFilter)` | `ramp` | `spend_requests.comment_created` |
848
+ | `ramp.spend_requests_created(filter?: WebhookFilter)` | `ramp` | `spend_requests.created` |
849
+ | `ramp.transactions_all_requirements_met_and_approved_changed(filter?: WebhookFilter)` | `ramp` | `transactions.all_requirements_met_and_approved_changed` |
850
+ | `ramp.transactions_authorized(filter?: WebhookFilter)` | `ramp` | `transactions.authorized` |
851
+ | `ramp.transactions_body_coding_updated(filter?: WebhookFilter)` | `ramp` | `transactions.body_coding_updated` |
852
+ | `ramp.transactions_cleared(filter?: WebhookFilter)` | `ramp` | `transactions.cleared` |
853
+ | `ramp.transactions_declined(filter?: WebhookFilter)` | `ramp` | `transactions.declined` |
854
+ | `ramp.transactions_ready_for_review(filter?: WebhookFilter)` | `ramp` | `transactions.ready_for_review` |
855
+ | `ramp.transactions_ready_to_sync(filter?: WebhookFilter)` | `ramp` | `transactions.ready_to_sync` |
856
+ | `ramp.transactions_receipt_added(filter?: WebhookFilter)` | `ramp` | `transactions.receipt_added` |
857
+ | `ramp.transactions_sync_requested(filter?: WebhookFilter)` | `ramp` | `transactions.sync_requested` |
858
+ | `ramp.transactions_synced(filter?: WebhookFilter)` | `ramp` | `transactions.synced` |
859
+ | `ramp.unified_requests_created(filter?: WebhookFilter)` | `ramp` | `unified_requests.created` |
860
+ | `ramp.unified_requests_external_approval_request(filter?: WebhookFilter)` | `ramp` | `unified_requests.external_approval_request` |
861
+ | `ramp.unified_requests_external_approval_request_reset(filter?: WebhookFilter)` | `ramp` | `unified_requests.external_approval_request_reset` |
862
+ | `ramp.unified_requests_modified(filter?: WebhookFilter)` | `ramp` | `unified_requests.modified` |
863
+ | `ramp.unified_requests_node_advanced(filter?: WebhookFilter)` | `ramp` | `unified_requests.node_advanced` |
864
+ | `ramp.unified_requests_override_approved(filter?: WebhookFilter)` | `ramp` | `unified_requests.override_approved` |
865
+ | `ramp.unified_requests_updated(filter?: WebhookFilter)` | `ramp` | `unified_requests.updated` |
866
+ | `ramp.users_invite_accepted(filter?: WebhookFilter)` | `ramp` | `users.invite_accepted` |
867
+ | `ramp.vendor_agreements_archived(filter?: WebhookFilter)` | `ramp` | `vendor_agreements.archived` |
868
+ | `ramp.vendor_agreements_created(filter?: WebhookFilter)` | `ramp` | `vendor_agreements.created` |
869
+ | `ramp.vendor_agreements_deleted(filter?: WebhookFilter)` | `ramp` | `vendor_agreements.deleted` |
870
+ | `ramp.vendor_agreements_document_added(filter?: WebhookFilter)` | `ramp` | `vendor_agreements.document_added` |
871
+ | `ramp.vendor_agreements_renewal_milestone(filter?: WebhookFilter)` | `ramp` | `vendor_agreements.renewal_milestone` |
872
+ | `ramp.vendor_agreements_updated(filter?: WebhookFilter)` | `ramp` | `vendor_agreements.updated` |
873
+ | `ramp.vendors_activated(filter?: WebhookFilter)` | `ramp` | `vendors.activated` |
874
+ | `ramp.vendors_approved(filter?: WebhookFilter)` | `ramp` | `vendors.approved` |
875
+ | `ramp.vendors_updated(filter?: WebhookFilter)` | `ramp` | `vendors.updated` |
876
+ | `recall.file_created(filter?: WebhookFilter)` | `recall` | `file.created` |
877
+ | `recall.recording_created(filter?: WebhookFilter)` | `recall` | `recording.created` |
878
+ | `recall.transcript_done(filter?: WebhookFilter)` | `recall` | `transcript.done` |
879
+ | `redis.file_created(filter?: WebhookFilter)` | `redis` | `file.created` |
880
+ | `redis.file_deleted(filter?: WebhookFilter)` | `redis` | `file.deleted` |
881
+ | `redis.file_updated(filter?: WebhookFilter)` | `redis` | `file.updated` |
882
+ | `s3.file_created(filter?: WebhookFilter)` | `s3` | `file.created` |
883
+ | `s3.file_deleted(filter?: WebhookFilter)` | `s3` | `file.deleted` |
884
+ | `s3.file_updated(filter?: WebhookFilter)` | `s3` | `file.updated` |
885
+ | `salesforce.Account_created(filter?: WebhookFilter)` | `salesforce` | `Account.created` |
886
+ | `salesforce.Account_deleted(filter?: WebhookFilter)` | `salesforce` | `Account.deleted` |
887
+ | `salesforce.Account_updated(filter?: WebhookFilter)` | `salesforce` | `Account.updated` |
888
+ | `salesforce.Account_upserted(filter?: WebhookFilter)` | `salesforce` | `Account.upserted` |
889
+ | `salesforce.Case_closed(filter?: WebhookFilter)` | `salesforce` | `Case.closed` |
890
+ | `salesforce.Case_created(filter?: WebhookFilter)` | `salesforce` | `Case.created` |
891
+ | `salesforce.Case_deleted(filter?: WebhookFilter)` | `salesforce` | `Case.deleted` |
892
+ | `salesforce.Case_updated(filter?: WebhookFilter)` | `salesforce` | `Case.updated` |
893
+ | `salesforce.Case_upserted(filter?: WebhookFilter)` | `salesforce` | `Case.upserted` |
894
+ | `salesforce.Contact_created(filter?: WebhookFilter)` | `salesforce` | `Contact.created` |
895
+ | `salesforce.Contact_deleted(filter?: WebhookFilter)` | `salesforce` | `Contact.deleted` |
896
+ | `salesforce.Contact_updated(filter?: WebhookFilter)` | `salesforce` | `Contact.updated` |
897
+ | `salesforce.Contact_upserted(filter?: WebhookFilter)` | `salesforce` | `Contact.upserted` |
898
+ | `salesforce.Lead_converted(filter?: WebhookFilter)` | `salesforce` | `Lead.converted` |
899
+ | `salesforce.Lead_created(filter?: WebhookFilter)` | `salesforce` | `Lead.created` |
900
+ | `salesforce.Lead_deleted(filter?: WebhookFilter)` | `salesforce` | `Lead.deleted` |
901
+ | `salesforce.Lead_updated(filter?: WebhookFilter)` | `salesforce` | `Lead.updated` |
902
+ | `salesforce.Lead_upserted(filter?: WebhookFilter)` | `salesforce` | `Lead.upserted` |
903
+ | `salesforce.Opportunity_created(filter?: WebhookFilter)` | `salesforce` | `Opportunity.created` |
904
+ | `salesforce.Opportunity_deleted(filter?: WebhookFilter)` | `salesforce` | `Opportunity.deleted` |
905
+ | `salesforce.Opportunity_updated(filter?: WebhookFilter)` | `salesforce` | `Opportunity.updated` |
906
+ | `salesforce.Opportunity_upserted(filter?: WebhookFilter)` | `salesforce` | `Opportunity.upserted` |
907
+ | `segment.group_create(filter?: WebhookFilter)` | `segment` | `group.create` |
908
+ | `segment.group_update(filter?: WebhookFilter)` | `segment` | `group.update` |
909
+ | `segment.group_upsert(filter?: WebhookFilter)` | `segment` | `group.upsert` |
910
+ | `segment.identify_create(filter?: WebhookFilter)` | `segment` | `identify.create` |
911
+ | `segment.identify_update(filter?: WebhookFilter)` | `segment` | `identify.update` |
912
+ | `segment.identify_upsert(filter?: WebhookFilter)` | `segment` | `identify.upsert` |
913
+ | `segment.page_create(filter?: WebhookFilter)` | `segment` | `page.create` |
914
+ | `segment.page_update(filter?: WebhookFilter)` | `segment` | `page.update` |
915
+ | `segment.page_upsert(filter?: WebhookFilter)` | `segment` | `page.upsert` |
916
+ | `segment.track_create(filter?: WebhookFilter)` | `segment` | `track.create` |
917
+ | `segment.track_update(filter?: WebhookFilter)` | `segment` | `track.update` |
918
+ | `segment.track_upsert(filter?: WebhookFilter)` | `segment` | `track.upsert` |
919
+ | `sendgrid.contact_create(filter?: WebhookFilter)` | `sendgrid` | `contact.create` |
920
+ | `sendgrid.contact_delete(filter?: WebhookFilter)` | `sendgrid` | `contact.delete` |
921
+ | `sendgrid.contact_update(filter?: WebhookFilter)` | `sendgrid` | `contact.update` |
922
+ | `sendgrid.event_bounce(filter?: WebhookFilter)` | `sendgrid` | `event.bounce` |
923
+ | `sendgrid.event_click(filter?: WebhookFilter)` | `sendgrid` | `event.click` |
924
+ | `sendgrid.event_deferred(filter?: WebhookFilter)` | `sendgrid` | `event.deferred` |
925
+ | `sendgrid.event_delivered(filter?: WebhookFilter)` | `sendgrid` | `event.delivered` |
926
+ | `sendgrid.event_dropped(filter?: WebhookFilter)` | `sendgrid` | `event.dropped` |
927
+ | `sendgrid.event_group_resubscribe(filter?: WebhookFilter)` | `sendgrid` | `event.group_resubscribe` |
928
+ | `sendgrid.event_group_unsubscribe(filter?: WebhookFilter)` | `sendgrid` | `event.group_unsubscribe` |
929
+ | `sendgrid.event_open(filter?: WebhookFilter)` | `sendgrid` | `event.open` |
930
+ | `sendgrid.event_processed(filter?: WebhookFilter)` | `sendgrid` | `event.processed` |
931
+ | `sendgrid.event_spamreport(filter?: WebhookFilter)` | `sendgrid` | `event.spamreport` |
932
+ | `sendgrid.event_unsubscribe(filter?: WebhookFilter)` | `sendgrid` | `event.unsubscribe` |
933
+ | `sendgrid.mail_create(filter?: WebhookFilter)` | `sendgrid` | `mail.create` |
934
+ | `sendgrid.mail_delete(filter?: WebhookFilter)` | `sendgrid` | `mail.delete` |
935
+ | `sendgrid.mail_update(filter?: WebhookFilter)` | `sendgrid` | `mail.update` |
936
+ | `sharepoint.file_created(filter?: WebhookFilter)` | `sharepoint` | `file.created` |
937
+ | `sharepoint.file_deleted(filter?: WebhookFilter)` | `sharepoint` | `file.deleted` |
938
+ | `sharepoint.file_updated(filter?: WebhookFilter)` | `sharepoint` | `file.updated` |
939
+ | `shopify.customer_cancel(filter?: WebhookFilter)` | `shopify` | `customer.cancel` |
940
+ | `shopify.customer_create(filter?: WebhookFilter)` | `shopify` | `customer.create` |
941
+ | `shopify.customer_delete(filter?: WebhookFilter)` | `shopify` | `customer.delete` |
942
+ | `shopify.customer_fulfill(filter?: WebhookFilter)` | `shopify` | `customer.fulfill` |
943
+ | `shopify.customer_paid(filter?: WebhookFilter)` | `shopify` | `customer.paid` |
944
+ | `shopify.customer_update(filter?: WebhookFilter)` | `shopify` | `customer.update` |
945
+ | `shopify.fulfillment_cancel(filter?: WebhookFilter)` | `shopify` | `fulfillment.cancel` |
946
+ | `shopify.fulfillment_create(filter?: WebhookFilter)` | `shopify` | `fulfillment.create` |
947
+ | `shopify.fulfillment_delete(filter?: WebhookFilter)` | `shopify` | `fulfillment.delete` |
948
+ | `shopify.fulfillment_fulfill(filter?: WebhookFilter)` | `shopify` | `fulfillment.fulfill` |
949
+ | `shopify.fulfillment_paid(filter?: WebhookFilter)` | `shopify` | `fulfillment.paid` |
950
+ | `shopify.fulfillment_update(filter?: WebhookFilter)` | `shopify` | `fulfillment.update` |
951
+ | `shopify.order_cancel(filter?: WebhookFilter)` | `shopify` | `order.cancel` |
952
+ | `shopify.order_create(filter?: WebhookFilter)` | `shopify` | `order.create` |
953
+ | `shopify.order_delete(filter?: WebhookFilter)` | `shopify` | `order.delete` |
954
+ | `shopify.order_fulfill(filter?: WebhookFilter)` | `shopify` | `order.fulfill` |
955
+ | `shopify.order_paid(filter?: WebhookFilter)` | `shopify` | `order.paid` |
956
+ | `shopify.order_update(filter?: WebhookFilter)` | `shopify` | `order.update` |
957
+ | `shopify.product_cancel(filter?: WebhookFilter)` | `shopify` | `product.cancel` |
958
+ | `shopify.product_create(filter?: WebhookFilter)` | `shopify` | `product.create` |
959
+ | `shopify.product_delete(filter?: WebhookFilter)` | `shopify` | `product.delete` |
960
+ | `shopify.product_fulfill(filter?: WebhookFilter)` | `shopify` | `product.fulfill` |
961
+ | `shopify.product_paid(filter?: WebhookFilter)` | `shopify` | `product.paid` |
962
+ | `shopify.product_update(filter?: WebhookFilter)` | `shopify` | `product.update` |
963
+ | `shortcut.epic_create(filter?: WebhookFilter)` | `shortcut` | `epic.create` |
964
+ | `shortcut.epic_delete(filter?: WebhookFilter)` | `shortcut` | `epic.delete` |
965
+ | `shortcut.epic_update(filter?: WebhookFilter)` | `shortcut` | `epic.update` |
966
+ | `shortcut.story_create(filter?: WebhookFilter)` | `shortcut` | `story.create` |
967
+ | `shortcut.story_delete(filter?: WebhookFilter)` | `shortcut` | `story.delete` |
968
+ | `shortcut.story_update(filter?: WebhookFilter)` | `shortcut` | `story.update` |
969
+ | `slack.message(filter?: WebhookFilter)` | `slack` | `message` |
970
+ | `slack.reaction_added(filter?: WebhookFilter)` | `slack` | `reaction_added` |
971
+ | `slack.channel_archived(filter?: WebhookFilter)` | `slack` | `channel.archived` |
972
+ | `slack.channel_created(filter?: WebhookFilter)` | `slack` | `channel.created` |
973
+ | `slack.channel_deleted(filter?: WebhookFilter)` | `slack` | `channel.deleted` |
974
+ | `slack.channel_member_joined(filter?: WebhookFilter)` | `slack` | `channel.member_joined` |
975
+ | `slack.channel_member_left(filter?: WebhookFilter)` | `slack` | `channel.member_left` |
976
+ | `slack.channel_renamed(filter?: WebhookFilter)` | `slack` | `channel.renamed` |
977
+ | `slack.channel_unarchived(filter?: WebhookFilter)` | `slack` | `channel.unarchived` |
978
+ | `slack.group_archived(filter?: WebhookFilter)` | `slack` | `group.archived` |
979
+ | `slack.group_deleted(filter?: WebhookFilter)` | `slack` | `group.deleted` |
980
+ | `slack.group_renamed(filter?: WebhookFilter)` | `slack` | `group.renamed` |
981
+ | `slack.group_unarchived(filter?: WebhookFilter)` | `slack` | `group.unarchived` |
982
+ | `slack.message_created(filter?: WebhookFilter)` | `slack` | `message.created` |
983
+ | `slack.message_deleted(filter?: WebhookFilter)` | `slack` | `message.deleted` |
984
+ | `slack.message_updated(filter?: WebhookFilter)` | `slack` | `message.updated` |
985
+ | `slack.reaction_removed(filter?: WebhookFilter)` | `slack` | `reaction.removed` |
986
+ | `slack.user_changed(filter?: WebhookFilter)` | `slack` | `user.changed` |
987
+ | `slack.user_joined(filter?: WebhookFilter)` | `slack` | `user.joined` |
988
+ | `slack.mention(channel: string)` | `slack` | `app_mention` |
989
+ | `slack.reaction(emoji: string)` | `slack` | `reaction_added` |
990
+ | `stripe.charge_failed(filter?: WebhookFilter)` | `stripe` | `charge.failed` |
991
+ | `stripe.charge_refunded(filter?: WebhookFilter)` | `stripe` | `charge.refunded` |
992
+ | `stripe.charge_succeeded(filter?: WebhookFilter)` | `stripe` | `charge.succeeded` |
993
+ | `stripe.charge_updated(filter?: WebhookFilter)` | `stripe` | `charge.updated` |
994
+ | `stripe.customer_created(filter?: WebhookFilter)` | `stripe` | `customer.created` |
995
+ | `stripe.customer_deleted(filter?: WebhookFilter)` | `stripe` | `customer.deleted` |
996
+ | `stripe.customer_subscription_created(filter?: WebhookFilter)` | `stripe` | `customer.subscription.created` |
997
+ | `stripe.customer_subscription_deleted(filter?: WebhookFilter)` | `stripe` | `customer.subscription.deleted` |
998
+ | `stripe.customer_subscription_updated(filter?: WebhookFilter)` | `stripe` | `customer.subscription.updated` |
999
+ | `stripe.customer_updated(filter?: WebhookFilter)` | `stripe` | `customer.updated` |
1000
+ | `stripe.invoice_created(filter?: WebhookFilter)` | `stripe` | `invoice.created` |
1001
+ | `stripe.invoice_finalized(filter?: WebhookFilter)` | `stripe` | `invoice.finalized` |
1002
+ | `stripe.invoice_paid(filter?: WebhookFilter)` | `stripe` | `invoice.paid` |
1003
+ | `stripe.invoice_payment_failed(filter?: WebhookFilter)` | `stripe` | `invoice.payment_failed` |
1004
+ | `stripe.invoice_updated(filter?: WebhookFilter)` | `stripe` | `invoice.updated` |
1005
+ | `stripe.invoice_voided(filter?: WebhookFilter)` | `stripe` | `invoice.voided` |
1006
+ | `stripe.payment_intent_canceled(filter?: WebhookFilter)` | `stripe` | `payment_intent.canceled` |
1007
+ | `stripe.payment_intent_created(filter?: WebhookFilter)` | `stripe` | `payment_intent.created` |
1008
+ | `stripe.payment_intent_payment_failed(filter?: WebhookFilter)` | `stripe` | `payment_intent.payment_failed` |
1009
+ | `stripe.payment_intent_requires_action(filter?: WebhookFilter)` | `stripe` | `payment_intent.requires_action` |
1010
+ | `stripe.payment_intent_succeeded(filter?: WebhookFilter)` | `stripe` | `payment_intent.succeeded` |
1011
+ | `teams.channel_created(filter?: WebhookFilter)` | `teams` | `channel.created` |
1012
+ | `teams.channel_deleted(filter?: WebhookFilter)` | `teams` | `channel.deleted` |
1013
+ | `teams.channel_updated(filter?: WebhookFilter)` | `teams` | `channel.updated` |
1014
+ | `teams.chat_message_created(filter?: WebhookFilter)` | `teams` | `chat_message.created` |
1015
+ | `teams.chat_message_deleted(filter?: WebhookFilter)` | `teams` | `chat_message.deleted` |
1016
+ | `teams.chat_message_updated(filter?: WebhookFilter)` | `teams` | `chat_message.updated` |
1017
+ | `teams.chat_created(filter?: WebhookFilter)` | `teams` | `chat.created` |
1018
+ | `teams.chat_deleted(filter?: WebhookFilter)` | `teams` | `chat.deleted` |
1019
+ | `teams.chat_updated(filter?: WebhookFilter)` | `teams` | `chat.updated` |
1020
+ | `teams.member_created(filter?: WebhookFilter)` | `teams` | `member.created` |
1021
+ | `teams.member_deleted(filter?: WebhookFilter)` | `teams` | `member.deleted` |
1022
+ | `teams.member_updated(filter?: WebhookFilter)` | `teams` | `member.updated` |
1023
+ | `teams.message_created(filter?: WebhookFilter)` | `teams` | `message.created` |
1024
+ | `teams.message_deleted(filter?: WebhookFilter)` | `teams` | `message.deleted` |
1025
+ | `teams.message_updated(filter?: WebhookFilter)` | `teams` | `message.updated` |
1026
+ | `teams.reply_created(filter?: WebhookFilter)` | `teams` | `reply.created` |
1027
+ | `teams.reply_deleted(filter?: WebhookFilter)` | `teams` | `reply.deleted` |
1028
+ | `teams.reply_updated(filter?: WebhookFilter)` | `teams` | `reply.updated` |
1029
+ | `teams.team_deleted(filter?: WebhookFilter)` | `teams` | `team.deleted` |
1030
+ | `teams.team_updated(filter?: WebhookFilter)` | `teams` | `team.updated` |
1031
+ | `telegram.business_connection(filter?: WebhookFilter)` | `telegram` | `business_connection` |
1032
+ | `telegram.business_message(filter?: WebhookFilter)` | `telegram` | `business_message` |
1033
+ | `telegram.callback_query(filter?: WebhookFilter)` | `telegram` | `callback_query` |
1034
+ | `telegram.channel_post(filter?: WebhookFilter)` | `telegram` | `channel_post` |
1035
+ | `telegram.chat_boost(filter?: WebhookFilter)` | `telegram` | `chat_boost` |
1036
+ | `telegram.chat_join_request(filter?: WebhookFilter)` | `telegram` | `chat_join_request` |
1037
+ | `telegram.chat_member(filter?: WebhookFilter)` | `telegram` | `chat_member` |
1038
+ | `telegram.chosen_inline_result(filter?: WebhookFilter)` | `telegram` | `chosen_inline_result` |
1039
+ | `telegram.deleted_business_messages(filter?: WebhookFilter)` | `telegram` | `deleted_business_messages` |
1040
+ | `telegram.edited_business_message(filter?: WebhookFilter)` | `telegram` | `edited_business_message` |
1041
+ | `telegram.edited_channel_post(filter?: WebhookFilter)` | `telegram` | `edited_channel_post` |
1042
+ | `telegram.edited_message(filter?: WebhookFilter)` | `telegram` | `edited_message` |
1043
+ | `telegram.guest_message(filter?: WebhookFilter)` | `telegram` | `guest_message` |
1044
+ | `telegram.inline_query(filter?: WebhookFilter)` | `telegram` | `inline_query` |
1045
+ | `telegram.managed_bot(filter?: WebhookFilter)` | `telegram` | `managed_bot` |
1046
+ | `telegram.message(filter?: WebhookFilter)` | `telegram` | `message` |
1047
+ | `telegram.message_reaction(filter?: WebhookFilter)` | `telegram` | `message_reaction` |
1048
+ | `telegram.message_reaction_count(filter?: WebhookFilter)` | `telegram` | `message_reaction_count` |
1049
+ | `telegram.my_chat_member(filter?: WebhookFilter)` | `telegram` | `my_chat_member` |
1050
+ | `telegram.poll(filter?: WebhookFilter)` | `telegram` | `poll` |
1051
+ | `telegram.poll_answer(filter?: WebhookFilter)` | `telegram` | `poll_answer` |
1052
+ | `telegram.pre_checkout_query(filter?: WebhookFilter)` | `telegram` | `pre_checkout_query` |
1053
+ | `telegram.purchased_paid_media(filter?: WebhookFilter)` | `telegram` | `purchased_paid_media` |
1054
+ | `telegram.removed_chat_boost(filter?: WebhookFilter)` | `telegram` | `removed_chat_boost` |
1055
+ | `telegram.shipping_query(filter?: WebhookFilter)` | `telegram` | `shipping_query` |
1056
+ | `zendesk.organization_created(filter?: WebhookFilter)` | `zendesk` | `organization.created` |
1057
+ | `zendesk.organization_deleted(filter?: WebhookFilter)` | `zendesk` | `organization.deleted` |
1058
+ | `zendesk.organization_updated(filter?: WebhookFilter)` | `zendesk` | `organization.updated` |
1059
+ | `zendesk.ticket_created(filter?: WebhookFilter)` | `zendesk` | `ticket.created` |
1060
+ | `zendesk.ticket_deleted(filter?: WebhookFilter)` | `zendesk` | `ticket.deleted` |
1061
+ | `zendesk.ticket_updated(filter?: WebhookFilter)` | `zendesk` | `ticket.updated` |
1062
+ | `zendesk.user_created(filter?: WebhookFilter)` | `zendesk` | `user.created` |
1063
+ | `zendesk.user_deleted(filter?: WebhookFilter)` | `zendesk` | `user.deleted` |
1064
+ | `zendesk.user_updated(filter?: WebhookFilter)` | `zendesk` | `user.updated` |
1065
+
1066
+ ## Other exported functions
1067
+
1068
+ Scheduling, cron and writeback utilities exported from the package root.
1069
+
1070
+ ```ts
1071
+ /** Stable across attempts; deliberately independent of process-tick ordinals. */
1072
+ export function flowRunWritebackIdempotency(runId: string, stepId: string): string;
1073
+ ```
1074
+
1075
+ ```ts
1076
+ /**
1077
+ * The `schedule_id` a flow's schedule subscribes to. Deterministic from the
1078
+ * flow name and the declaration, so the local runner, `flows check` and the
1079
+ * journal all name the same slot stream without a registry — and injective:
1080
+ * a readable slug for humans, plus a hash of the exact declaration so
1081
+ * `1-5` and `1,5`, or two zones, or two long names sharing a prefix, never
1082
+ * share a stream (the kernel dispatches an event to its first matching
1083
+ * subscription only).
1084
+ */
1085
+ export function scheduleIdFor(flowName: string, source: ScheduleTriggerSource): string;
1086
+ ```
1087
+
1088
+ ```ts
1089
+ /**
1090
+ * Standard five-field cron. Accepts `*`, values, ranges, lists and `/step`,
1091
+ * plus month and weekday names; refuses anything outside each field's range.
1092
+ * Validation, not evaluation — the schedule's clock is the runner's.
1093
+ */
1094
+ export function parseCron(expression: string): CronFields;
1095
+ ```
1096
+
1097
+ ```ts
1098
+ export function cronGrid(fields: CronFields, tz?: string): CronGrid | undefined;
1099
+ ```
1100
+
1101
+ ```ts
1102
+ /** The fixed interval of a cron, when `cronGrid` finds one. Kept for callers that only need the period. */
1103
+ export function cronFixedIntervalMs(fields: CronFields, tz?: string): number | undefined;
1104
+ ```
1105
+
1106
+ ```ts
1107
+ /**
1108
+ * The longest gap between consecutive fires over two calendar years (one of
1109
+ * them leap), in milliseconds — a cron's natural quiet period. Evaluated on
1110
+ * the UTC calendar minute by minute; a zone offset does not change gap
1111
+ * lengths, and a DST shift changes one gap by at most an hour, which the
1112
+ * callers' multiple absorbs. An expression that fires at most once in the
1113
+ * span reports the whole span. Returns undefined when it never fires.
1114
+ */
1115
+ export function cronMaxGapMs(fields: CronFields): number | undefined;
1116
+ ```
1117
+
1118
+ ```ts
1119
+ /** `every("5m")` — a fixed interval. Units: s, m, h, d. Minimum one second. */
1120
+ export function everyToMs(value: string): number;
1121
+ ```
1122
+
1123
+ ## Exported constants
1124
+
1125
+ Values exported from the package root, as declared.
1126
+
1127
+ ```ts
1128
+ /**
1129
+ * The bound on the optional `done()` detail, in Unicode code points of the
1130
+ * FINAL normalized string — truncation suffix included.
1131
+ *
1132
+ * Stated in code points rather than `String.length` on purpose: `.length`
1133
+ * counts UTF-16 code units, so an emoji-heavy detail measured that way is
1134
+ * half the length a reader would call it. The number is the same order the
1135
+ * kernel uses for a gate's free-text detail
1136
+ * (`kernel/relayflowd/src/engine/remote.rs`), but it is not the same bound:
1137
+ * that one takes 2,000 characters and then appends its suffix.
1138
+ *
1139
+ * The runtime enforces this; it is exported so an author can measure a detail
1140
+ * before passing one.
1141
+ */
1142
+ export const COMPLETION_DETAIL_MAX_CODE_POINTS = 2000;
1143
+ ```
1144
+
1145
+ ```ts
1146
+ /** Exact upstream event names, plus the generated Slack mention shorthand. */
1147
+ export const providerEventTypes = Object.freeze({
1148
+ "airtable": Object.freeze(["base.create","base.delete","base.update","record.create","record.delete","record.update","table.create","table.delete","table.update"] as const),
1149
+ "asana": Object.freeze(["project.added","project.changed","project.deleted","project.removed","section.added","section.changed","section.deleted","section.removed","task.added","task.changed","task.completed","task.deleted","task.removed","workspace.added","workspace.changed","workspace.deleted","workspace.removed"] as const),
1150
+ "azure-blob": Object.freeze(["file.created","file.deleted","file.updated"] as const),
1151
+ "box": Object.freeze(["file.created","file.deleted","file.updated"] as const),
1152
+ "calendly": Object.freeze(["event_type.canceled","event_type.created","event_type.deleted","event_type.updated","invitee.canceled","invitee.created","invitee.deleted","invitee.updated","scheduled_event.canceled","scheduled_event.created","scheduled_event.deleted","scheduled_event.updated"] as const),
1153
+ "clickup": Object.freeze(["folder.created","folder.deleted","folder.updated","list.created","list.deleted","list.updated","space.created","space.deleted","space.updated","task.created","task.deleted","task.updated"] as const),
1154
+ "cloudflare": Object.freeze(["access_custom_certificate_expiration_type","advanced_http_alert_error","billing_usage_alert","dedicated_ssl_certificate_event_type","health_check_status_notification","http_alert_origin_error","workers_alert","workers_observability_alert"] as const),
1155
+ "confluence": Object.freeze(["page.created","page.deleted","page.updated","space.created","space.deleted","space.updated"] as const),
1156
+ "daytona": Object.freeze(["sandbox.created","sandbox.state.updated","snapshot.created","snapshot.removed","snapshot.state.updated","volume.created","volume.state.updated"] as const),
1157
+ "docker-hub": Object.freeze(["push"] as const),
1158
+ "dropbox": Object.freeze(["file.changed"] as const),
1159
+ "fathom": Object.freeze(["new-meeting-content-ready"] as const),
1160
+ "gcp": Object.freeze(["billing.budget.alert","cloud-run.service.created","cloud-run.service.deleted","cloud-run.service.updated","error-reporting.event.logged","error-reporting.group.opened","error-reporting.group.reopened","monitoring.incident.closed","monitoring.incident.open"] as const),
1161
+ "gcs": Object.freeze(["file.created","file.deleted","file.updated"] as const),
1162
+ "github": Object.freeze(["check_run","check_run.completed","deployment_status.created","issue_comment","issue_comment.created","issues","issues.closed","issues.edited","issues.labeled","issues.opened","issues.reopened","issues.unlabeled","pull_request","pull_request.closed","pull_request.edited","pull_request.labeled","pull_request.opened","pull_request.ready_for_review","pull_request.reopened","pull_request.synchronize","pull_request.unlabeled","pull_request_review","pull_request_review.dismissed","pull_request_review.edited","pull_request_review.submitted","pull_request_review_comment.created","pull_request_review_thread.resolved","push","status"] as const),
1163
+ "gitlab": Object.freeze(["build","build.canceled","build.created","build.failed","build.manual","build.pending","build.running","build.skipped","build.success","deployment","deployment.canceled","deployment.created","deployment.failed","deployment.running","deployment.success","issue","issue.close","issue.open","issue.reopen","issue.update","job.canceled","job.created","job.failed","job.manual","job.pending","job.running","job.skipped","job.success","merge_request","merge_request.approved","merge_request.close","merge_request.merge","merge_request.open","merge_request.reopen","merge_request.unapproved","merge_request.update","note","note.Commit","note.Issue","note.MergeRequest","note.Snippet","pipeline","pipeline.canceled","pipeline.created","pipeline.failed","pipeline.manual","pipeline.pending","pipeline.running","pipeline.skipped","pipeline.success","pipeline.waiting_for_resource","push","tag_push"] as const),
1164
+ "gmail": Object.freeze(["file.created","file.deleted","file.updated"] as const),
1165
+ "google-calendar": Object.freeze(["calendar.exists","calendar.not_exists","calendar.sync"] as const),
1166
+ "google-drive": Object.freeze(["file.created","file.deleted","file.updated"] as const),
1167
+ "granola": Object.freeze(["file.created","note.access_granted","note.edited","note.generated"] as const),
1168
+ "hubspot": Object.freeze(["company.associationChange","company.created","company.deleted","company.merged","company.propertyChange","contact.associationChange","contact.created","contact.deleted","contact.merged","contact.propertyChange","deal.associationChange","deal.created","deal.deleted","deal.merged","deal.propertyChange","ticket.associationChange","ticket.created","ticket.deleted","ticket.merged","ticket.propertyChange"] as const),
1169
+ "intercom": Object.freeze(["company.archived","company.closed","company.created","company.deleted","company.reopened","company.updated","contact.archived","contact.closed","contact.created","contact.deleted","contact.reopened","contact.updated","conversation.archived","conversation.closed","conversation.created","conversation.deleted","conversation.reopened","conversation.updated"] as const),
1170
+ "jira": Object.freeze(["comment.created","comment.deleted","comment.updated","issue.created","issue.deleted","issue.updated","project.created","project.deleted","project.updated","sprint.created","sprint.deleted","sprint.updated"] as const),
1171
+ "linear": Object.freeze(["AgentSessionEvent.created","AgentSessionEvent.prompted","AppUserNotification.issueAssignedToYou","AppUserNotification.issueCommentMention","AppUserNotification.issueCommentReaction","AppUserNotification.issueEmojiReaction","AppUserNotification.issueMention","AppUserNotification.issueNewComment","AppUserNotification.issueStatusChanged","AppUserNotification.issueUnassignedFromYou","OAuthApp.revoked","PermissionChange.teamAccessChanged","comment.create","comment.remove","comment.update","cycle.create","cycle.remove","cycle.update","issue.create","issue.remove","issue.update","label.create","label.remove","label.update","milestone.create","milestone.remove","milestone.update","project.create","project.remove","project.update","roadmap.create","roadmap.remove","roadmap.update"] as const),
1172
+ "mailgun": Object.freeze(["event.accepted","event.clicked","event.complained","event.delivered","event.failed","event.opened","event.permanent_fail","event.stored","event.unsubscribed","list.created","list.updated","message.accepted","message.delivered","message.failed","message.stored"] as const),
1173
+ "mixpanel": Object.freeze(["cohort.create","cohort.delete","cohort.merge","cohort.update","event.create","event.delete","event.merge","event.update","profile.create","profile.delete","profile.merge","profile.update"] as const),
1174
+ "neon": Object.freeze(["advisor.issue_raised","endpoint.state_changed","operation.cancelled","operation.failed","operation.succeeded"] as const),
1175
+ "notion": Object.freeze(["database.created","database.deleted","database.moved","database.schema_updated","database.undeleted","page.content_updated","page.created","page.deleted","page.locked","page.moved","page.properties_updated","page.undeleted","page.unlocked"] as const),
1176
+ "onedrive": Object.freeze(["file.created","file.deleted","file.updated"] as const),
1177
+ "pipedrive": Object.freeze(["activity.created","activity.deleted","activity.updated","deal.created","deal.deleted","deal.lost","deal.updated","deal.won","organization.created","organization.deleted","organization.updated","person.created","person.deleted","person.updated"] as const),
1178
+ "postgres": Object.freeze(["file.created","file.deleted","file.updated"] as const),
1179
+ "posthog": Object.freeze(["posthog.alert.resolved","posthog.alert.triggered"] as const),
1180
+ "ramp": Object.freeze(["applications.status_updated","bills.approved","bills.archived","bills.created","bills.paid","bills.ready_to_sync","bills.rejected","bills.updated","entities.created","item_receipts.created","payments.updated","purchase_orders.archived","purchase_orders.created","purchase_orders.updated","reimbursements.batch_payment_reimbursed","reimbursements.ready_for_review","reimbursements.ready_to_sync","reimbursements.sync_requested","spend_requests.comment_created","spend_requests.created","transactions.all_requirements_met_and_approved_changed","transactions.authorized","transactions.body_coding_updated","transactions.cleared","transactions.declined","transactions.ready_for_review","transactions.ready_to_sync","transactions.receipt_added","transactions.sync_requested","transactions.synced","unified_requests.created","unified_requests.external_approval_request","unified_requests.external_approval_request_reset","unified_requests.modified","unified_requests.node_advanced","unified_requests.override_approved","unified_requests.updated","users.invite_accepted","vendor_agreements.archived","vendor_agreements.created","vendor_agreements.deleted","vendor_agreements.document_added","vendor_agreements.renewal_milestone","vendor_agreements.updated","vendors.activated","vendors.approved","vendors.updated"] as const),
1181
+ "recall": Object.freeze(["file.created","recording.created","transcript.done"] as const),
1182
+ "redis": Object.freeze(["file.created","file.deleted","file.updated"] as const),
1183
+ "s3": Object.freeze(["file.created","file.deleted","file.updated"] as const),
1184
+ "salesforce": Object.freeze(["Account.created","Account.deleted","Account.updated","Account.upserted","Case.closed","Case.created","Case.deleted","Case.updated","Case.upserted","Contact.created","Contact.deleted","Contact.updated","Contact.upserted","Lead.converted","Lead.created","Lead.deleted","Lead.updated","Lead.upserted","Opportunity.created","Opportunity.deleted","Opportunity.updated","Opportunity.upserted"] as const),
1185
+ "segment": Object.freeze(["group.create","group.update","group.upsert","identify.create","identify.update","identify.upsert","page.create","page.update","page.upsert","track.create","track.update","track.upsert"] as const),
1186
+ "sendgrid": Object.freeze(["contact.create","contact.delete","contact.update","event.bounce","event.click","event.deferred","event.delivered","event.dropped","event.group_resubscribe","event.group_unsubscribe","event.open","event.processed","event.spamreport","event.unsubscribe","mail.create","mail.delete","mail.update"] as const),
1187
+ "sharepoint": Object.freeze(["file.created","file.deleted","file.updated"] as const),
1188
+ "shopify": Object.freeze(["customer.cancel","customer.create","customer.delete","customer.fulfill","customer.paid","customer.update","fulfillment.cancel","fulfillment.create","fulfillment.delete","fulfillment.fulfill","fulfillment.paid","fulfillment.update","order.cancel","order.create","order.delete","order.fulfill","order.paid","order.update","product.cancel","product.create","product.delete","product.fulfill","product.paid","product.update"] as const),
1189
+ "shortcut": Object.freeze(["epic.create","epic.delete","epic.update","story.create","story.delete","story.update"] as const),
1190
+ "slack": Object.freeze(["app_mention","channel.archived","channel.created","channel.deleted","channel.member_joined","channel.member_left","channel.renamed","channel.unarchived","group.archived","group.deleted","group.renamed","group.unarchived","message","message.created","message.deleted","message.updated","reaction.added","reaction.removed","reaction_added","user.changed","user.joined"] as const),
1191
+ "stripe": Object.freeze(["charge.failed","charge.refunded","charge.succeeded","charge.updated","customer.created","customer.deleted","customer.subscription.created","customer.subscription.deleted","customer.subscription.updated","customer.updated","invoice.created","invoice.finalized","invoice.paid","invoice.payment_failed","invoice.updated","invoice.voided","payment_intent.canceled","payment_intent.created","payment_intent.payment_failed","payment_intent.requires_action","payment_intent.succeeded"] as const),
1192
+ "teams": Object.freeze(["channel.created","channel.deleted","channel.updated","chat.created","chat.deleted","chat.updated","chat_message.created","chat_message.deleted","chat_message.updated","member.created","member.deleted","member.updated","message.created","message.deleted","message.updated","reply.created","reply.deleted","reply.updated","team.deleted","team.updated"] as const),
1193
+ "telegram": Object.freeze(["business_connection","business_message","callback_query","channel_post","chat_boost","chat_join_request","chat_member","chosen_inline_result","deleted_business_messages","edited_business_message","edited_channel_post","edited_message","guest_message","inline_query","managed_bot","message","message_reaction","message_reaction_count","my_chat_member","poll","poll_answer","pre_checkout_query","purchased_paid_media","removed_chat_boost","shipping_query"] as const),
1194
+ "zendesk": Object.freeze(["organization.created","organization.deleted","organization.updated","ticket.created","ticket.deleted","ticket.updated","user.created","user.deleted","user.updated"] as const),
1195
+ });
1196
+ ```
1197
+
1198
+ ## Referenced declarations
1199
+
1200
+ Every type named by a declaration above or by the helper namespace table, followed transitively through the file that names it. Dependency types are named by import; completion reasons and `Helpers` are the tables above.
1201
+
1202
+ ### TriggerSource
1203
+
1204
+ ```ts
1205
+ /** A webhook inbox subscription, or a `schedule.*` tick subscription. */
1206
+ export type TriggerSource = WebhookTriggerSource | ScheduleTriggerSource;
1207
+ ```
1208
+
1209
+ ### CloudCapabilities
1210
+
1211
+ ```ts
1212
+ /** Capability ports are injected by a host runtime, never constructed by authored input. */
1213
+ export interface CloudCapabilities {
1214
+ readonly babysitterTurn?: CloudBabysitterTurnCapability;
1215
+ }
1216
+ ```
1217
+
1218
+ ### ActivityOptions
1219
+
1220
+ ```ts
1221
+ /** Bounds are required so a body-level subscription cannot keep a run open forever. */
1222
+ export interface ActivityOptions {
1223
+ /** Coalesce a burst until this long after its most recent frame. Defaults to zero. */
1224
+ readonly settle?: ActivityDuration;
1225
+ /** Per wake: return idle after this long without a buffered matching frame. */
1226
+ readonly idle: ActivityDuration;
1227
+ /** Absolute cap fixed when the subscription is opened. */
1228
+ readonly deadline: ActivityDuration;
1229
+ /** Include events caused by the run identity. Defaults to false. */
1230
+ readonly includeSelf?: boolean;
1231
+ }
1232
+ ```
1233
+
1234
+ ### Activity
1235
+
1236
+ ```ts
1237
+ /** A durable, bounded cursor over matching provider events. */
1238
+ export interface Activity {
1239
+ next(): Promise<Wake>;
1240
+ close(): Promise<void>;
1241
+ }
1242
+ ```
1243
+
1244
+ ### CloudHelper
1245
+
1246
+ ```ts
1247
+ /** AgentWorkforce Cloud helper contract generated from its relayfile adapter. */
1248
+ export interface CloudHelper {
1249
+ workers: {
1250
+ mintEnrollmentToken(input: {
1251
+ workspaceId: string;
1252
+ name: string;
1253
+ /** Principal resolved at `<mount>/principals/<as>`. */
1254
+ as: string;
1255
+ }): Step<EnrollmentReceipt>;
1256
+ list(input: { workspaceId: string; as: string }): Step<{
1257
+ online: WorkerSummary[];
1258
+ all: WorkerSummary[];
1259
+ }>;
1260
+ heartbeat(input: { workerId: string; as: string }): Step<Heartbeat>;
1261
+ awaitHeartbeat(input: {
1262
+ workerId: string;
1263
+ as: string;
1264
+ within: string;
1265
+ }): Step<Heartbeat>;
1266
+ };
1267
+ schedules: {
1268
+ create(input: {
1269
+ workspaceId: string;
1270
+ workflow: string;
1271
+ cron: string;
1272
+ name: string;
1273
+ as: string;
1274
+ }): Step<{ id: string }>;
1275
+ fire(input: { scheduleId: string; as: string }): Step<{ accepted: boolean }>;
1276
+ get(input: { scheduleId: string; as: string }): Step<ScheduleState>;
1277
+ remove(input: { scheduleId: string; as: string }): Step<{ deleted: boolean }>;
1278
+ };
1279
+ runs: {
1280
+ journal(input: { runId: string; as: string }): Step<RunJournal>;
1281
+ };
1282
+ }
1283
+ ```
1284
+
1285
+ ### MemoryHelper
1286
+
1287
+ ```ts
1288
+ export interface MemoryHelper {
1289
+ /** Local script memory read; does not journal a step. */
1290
+ recall(query: string, options?: MemoryRecallOptions): Promise<HistoryEntry[]>;
1291
+ /** Best matching decision trajectory, or an empty array. No journal step. */
1292
+ why(task: string): Promise<TrajectoryEntry[]>;
1293
+ /** Journals the finding on the durable root run, then persists it to this flow's script memory; later runs see it via recall/why. Idempotent per finding. Must be awaited. */
1294
+ learn(finding: MemoryFinding): Promise<void>;
1295
+ }
1296
+ ```
1297
+
1298
+ ### WebhookFilter
1299
+
1300
+ ```ts
1301
+ /** Recursive object subset; array and scalar leaves match exactly. */
1302
+ export type WebhookFilter = { readonly [key: string]: WebhookValue };
1303
+ ```
1304
+
1305
+ ### WebhookTriggerSource
1306
+
1307
+ ```ts
1308
+ export interface WebhookTriggerSource {
1309
+ readonly kind: "webhook";
1310
+ readonly name: string;
1311
+ readonly filter?: WebhookFilter;
1312
+ }
1313
+ ```
1314
+
1315
+ ### ScheduleCronOptions
1316
+
1317
+ ```ts
1318
+ export interface ScheduleCronOptions {
1319
+ readonly tz?: string;
1320
+ }
1321
+ ```
1322
+
1323
+ ### ScheduleTriggerSource
1324
+
1325
+ ```ts
1326
+ /**
1327
+ * Schedule triggers. Hand-written, unlike the provider namespaces under
1328
+ * `triggers/`, because a schedule is not a provider event: there is no inbox
1329
+ * and no upstream mapping to generate from. A schedule is an event source —
1330
+ * locally the `flows tick` runner, on Cloud a relaycron cron — that submits
1331
+ * `flows.tick` events, and this namespace declares which ticks a flow wants.
1332
+ *
1333
+ * Constructing a source opens nothing. The SDK lowers it to the same
1334
+ * `flows.tick` subscription `testdata/tick-heartbeat.flow.yaml` writes by
1335
+ * hand (`scheduleTriggerSpec`), and `flows schedule` sends the cron to Cloud.
1336
+ */
1337
+
1338
+ export interface ScheduleTriggerSource {
1339
+ readonly kind: "schedule";
1340
+ /** Fixed: every schedule is delivered as a `flows.tick` event. */
1341
+ readonly name: "flows.tick";
1342
+ /** A 5-field cron expression, when declared with `schedule.cron`. */
1343
+ readonly cron?: string;
1344
+ /** IANA zone for `cron`; defaults to UTC. */
1345
+ readonly tz?: string;
1346
+ /** Fixed interval in milliseconds, when declared with `schedule.every` or when `cron` is exactly a tick grid. */
1347
+ readonly intervalMs?: number;
1348
+ /** Phase of that grid: the first fire is `epochMs` past the Unix epoch; present exactly when `intervalMs` is. */
1349
+ readonly epochMs?: number;
1350
+ }
1351
+ ```
1352
+
1353
+ ### CronFields
1354
+
1355
+ ```ts
1356
+ export interface CronFields {
1357
+ readonly minute: string;
1358
+ readonly hour: string;
1359
+ readonly dayOfMonth: string;
1360
+ readonly month: string;
1361
+ readonly dayOfWeek: string;
1362
+ }
1363
+ ```
1364
+
1365
+ ### CronGrid
1366
+
1367
+ ```ts
1368
+ /** A tick grid that reproduces a cron exactly: fire every `intervalMs`, phase-aligned at `epochMs` past the Unix epoch. */
1369
+ export interface CronGrid {
1370
+ readonly intervalMs: number;
1371
+ readonly epochMs: number;
1372
+ }
1373
+ ```
1374
+
1375
+ ### AirtableHelper (not exported from the package root)
1376
+
1377
+ ```ts
1378
+ export type AirtableHelper = UnavailableHelper;
1379
+ ```
1380
+
1381
+ ### AsanaHelper (not exported from the package root)
1382
+
1383
+ ```ts
1384
+ export type AsanaHelper = JournalHelper<ReturnType<typeof asanaClient>>;
1385
+ ```
1386
+
1387
+ ### AzureBlobHelper (not exported from the package root)
1388
+
1389
+ ```ts
1390
+ export type AzureBlobHelper = JournalHelper<ReturnType<typeof azureBlobClient>>;
1391
+ ```
1392
+
1393
+ ### BoxHelper (not exported from the package root)
1394
+
1395
+ ```ts
1396
+ export type BoxHelper = JournalHelper<ReturnType<typeof boxClient>>;
1397
+ ```
1398
+
1399
+ ### CalendlyHelper (not exported from the package root)
1400
+
1401
+ ```ts
1402
+ export type CalendlyHelper = JournalHelper<ReturnType<typeof calendlyClient>>;
1403
+ ```
1404
+
1405
+ ### ClickupHelper (not exported from the package root)
1406
+
1407
+ ```ts
1408
+ export type ClickupHelper = JournalHelper<ReturnType<typeof clickupClient>>;
1409
+ ```
1410
+
1411
+ ### CloudflareHelper (not exported from the package root)
1412
+
1413
+ ```ts
1414
+ export type CloudflareHelper = JournalHelper<ReturnType<typeof cloudflareClient>>;
1415
+ ```
1416
+
1417
+ ### ConfluenceHelper (not exported from the package root)
1418
+
1419
+ ```ts
1420
+ export type ConfluenceHelper = JournalHelper<ReturnType<typeof confluenceClient>>;
1421
+ ```
1422
+
1423
+ ### DaytonaHelper (not exported from the package root)
1424
+
1425
+ ```ts
1426
+ export type DaytonaHelper = JournalHelper<ReturnType<typeof daytonaClient>>;
1427
+ ```
1428
+
1429
+ ### DockerHubHelper (not exported from the package root)
1430
+
1431
+ ```ts
1432
+ export type DockerHubHelper = UnavailableHelper;
1433
+ ```
1434
+
1435
+ ### DropboxHelper (not exported from the package root)
1436
+
1437
+ ```ts
1438
+ export type DropboxHelper = JournalHelper<ReturnType<typeof dropboxClient>>;
1439
+ ```
1440
+
1441
+ ### FathomHelper (not exported from the package root)
1442
+
1443
+ ```ts
1444
+ export type FathomHelper = UnavailableHelper;
1445
+ ```
1446
+
1447
+ ### GcpHelper (not exported from the package root)
1448
+
1449
+ ```ts
1450
+ export type GcpHelper = UnavailableHelper;
1451
+ ```
1452
+
1453
+ ### GcsHelper (not exported from the package root)
1454
+
1455
+ ```ts
1456
+ export type GcsHelper = JournalHelper<ReturnType<typeof gcsClient>>;
1457
+ ```
1458
+
1459
+ ### GithubHelper (not exported from the package root)
1460
+
1461
+ ```ts
1462
+ export type GithubHelper = JournalHelper<ReturnType<typeof githubClient>>;
1463
+ ```
1464
+
1465
+ ### GitlabHelper (not exported from the package root)
1466
+
1467
+ ```ts
1468
+ export type GitlabHelper = JournalHelper<ReturnType<typeof gitlabClient>>;
1469
+ ```
1470
+
1471
+ ### GmailHelper (not exported from the package root)
1472
+
1473
+ ```ts
1474
+ export type GmailHelper = JournalHelper<ReturnType<typeof gmailClient>>;
1475
+ ```
1476
+
1477
+ ### GoogleCalendarHelper (not exported from the package root)
1478
+
1479
+ ```ts
1480
+ export type GoogleCalendarHelper = JournalHelper<ReturnType<typeof googleCalendarClient>>;
1481
+ ```
1482
+
1483
+ ### GoogleDriveHelper (not exported from the package root)
1484
+
1485
+ ```ts
1486
+ export type GoogleDriveHelper = JournalHelper<ReturnType<typeof googleDriveClient>>;
1487
+ ```
1488
+
1489
+ ### GranolaHelper (not exported from the package root)
1490
+
1491
+ ```ts
1492
+ export type GranolaHelper = JournalHelper<ReturnType<typeof granolaClient>>;
1493
+ ```
1494
+
1495
+ ### HubspotHelper (not exported from the package root)
1496
+
1497
+ ```ts
1498
+ export type HubspotHelper = JournalHelper<ReturnType<typeof hubspotClient>>;
1499
+ ```
1500
+
1501
+ ### IntercomHelper (not exported from the package root)
1502
+
1503
+ ```ts
1504
+ export type IntercomHelper = JournalHelper<ReturnType<typeof intercomClient>>;
1505
+ ```
1506
+
1507
+ ### JiraHelper (not exported from the package root)
1508
+
1509
+ ```ts
1510
+ export type JiraHelper = JournalHelper<ReturnType<typeof jiraClient>>;
1511
+ ```
1512
+
1513
+ ### LinearHelper (not exported from the package root)
1514
+
1515
+ ```ts
1516
+ export type LinearHelper = JournalHelper<ReturnType<typeof linearClient>>;
1517
+ ```
1518
+
1519
+ ### MailgunHelper (not exported from the package root)
1520
+
1521
+ ```ts
1522
+ export type MailgunHelper = JournalHelper<ReturnType<typeof mailgunClient>>;
1523
+ ```
1524
+
1525
+ ### MixpanelHelper (not exported from the package root)
1526
+
1527
+ ```ts
1528
+ export type MixpanelHelper = JournalHelper<ReturnType<typeof mixpanelClient>>;
1529
+ ```
1530
+
1531
+ ### NeonHelper (not exported from the package root)
1532
+
1533
+ ```ts
1534
+ export type NeonHelper = UnavailableHelper;
1535
+ ```
1536
+
1537
+ ### NotionHelper (not exported from the package root)
1538
+
1539
+ ```ts
1540
+ export type NotionHelper = JournalHelper<ReturnType<typeof notionClient>>;
1541
+ ```
1542
+
1543
+ ### OnedriveHelper (not exported from the package root)
1544
+
1545
+ ```ts
1546
+ export type OnedriveHelper = JournalHelper<ReturnType<typeof onedriveClient>>;
1547
+ ```
1548
+
1549
+ ### PipedriveHelper (not exported from the package root)
1550
+
1551
+ ```ts
1552
+ export type PipedriveHelper = JournalHelper<ReturnType<typeof pipedriveClient>>;
1553
+ ```
1554
+
1555
+ ### PostgresHelper (not exported from the package root)
1556
+
1557
+ ```ts
1558
+ export type PostgresHelper = JournalHelper<ReturnType<typeof postgresClient>>;
1559
+ ```
1560
+
1561
+ ### PosthogHelper (not exported from the package root)
1562
+
1563
+ ```ts
1564
+ export type PosthogHelper = UnavailableHelper;
1565
+ ```
1566
+
1567
+ ### RampHelper (not exported from the package root)
1568
+
1569
+ ```ts
1570
+ export type RampHelper = JournalHelper<ReturnType<typeof rampClient>>;
1571
+ ```
1572
+
1573
+ ### RecallHelper (not exported from the package root)
1574
+
1575
+ ```ts
1576
+ export type RecallHelper = JournalHelper<ReturnType<typeof recallClient>>;
1577
+ ```
1578
+
1579
+ ### RedditHelper (not exported from the package root)
1580
+
1581
+ ```ts
1582
+ export type RedditHelper = JournalHelper<ReturnType<typeof redditClient>>;
1583
+ ```
1584
+
1585
+ ### RedisHelper (not exported from the package root)
1586
+
1587
+ ```ts
1588
+ export type RedisHelper = JournalHelper<ReturnType<typeof redisClient>>;
1589
+ ```
1590
+
1591
+ ### S3Helper (not exported from the package root)
1592
+
1593
+ ```ts
1594
+ export type S3Helper = JournalHelper<ReturnType<typeof s3Client>>;
1595
+ ```
1596
+
1597
+ ### SalesforceHelper (not exported from the package root)
1598
+
1599
+ ```ts
1600
+ export type SalesforceHelper = JournalHelper<ReturnType<typeof salesforceClient>>;
1601
+ ```
1602
+
1603
+ ### SegmentHelper (not exported from the package root)
1604
+
1605
+ ```ts
1606
+ export type SegmentHelper = UnavailableHelper;
1607
+ ```
1608
+
1609
+ ### SendgridHelper (not exported from the package root)
1610
+
1611
+ ```ts
1612
+ export type SendgridHelper = JournalHelper<ReturnType<typeof sendgridClient>>;
1613
+ ```
1614
+
1615
+ ### SharepointHelper (not exported from the package root)
1616
+
1617
+ ```ts
1618
+ export type SharepointHelper = JournalHelper<ReturnType<typeof sharepointClient>>;
1619
+ ```
1620
+
1621
+ ### ShopifyHelper (not exported from the package root)
1622
+
1623
+ ```ts
1624
+ export type ShopifyHelper = UnavailableHelper;
1625
+ ```
1626
+
1627
+ ### ShortcutHelper (not exported from the package root)
1628
+
1629
+ ```ts
1630
+ export type ShortcutHelper = JournalHelper<ReturnType<typeof shortcutClient>>;
1631
+ ```
1632
+
1633
+ ### SlackHelper
1634
+
1635
+ ```ts
1636
+ /** Slack writeback helpers; every call is a journal-backed effect. */
1637
+ export interface SlackHelper {
1638
+ post(channel: string, text: string | SlackPostMessage, opts?: SlackPostOptions): Step<SlackReceipt>;
1639
+ dm(user: string, text: string): Step<{ user: string; ts: string }>;
1640
+ reply(channel: string, threadTs: string, text: string): Step<SlackReceipt>;
1641
+ react(channel: string, messageTs: string, emoji: string): Step<void>;
1642
+ }
1643
+ ```
1644
+
1645
+ ### StripeHelper (not exported from the package root)
1646
+
1647
+ ```ts
1648
+ export type StripeHelper = JournalHelper<ReturnType<typeof stripeClient>>;
1649
+ ```
1650
+
1651
+ ### TeamsHelper (not exported from the package root)
1652
+
1653
+ ```ts
1654
+ export type TeamsHelper = JournalHelper<ReturnType<typeof teamsClient>>;
1655
+ ```
1656
+
1657
+ ### TelegramHelper (not exported from the package root)
1658
+
1659
+ ```ts
1660
+ export type TelegramHelper = JournalHelper<ReturnType<typeof telegramClient>>;
1661
+ ```
1662
+
1663
+ ### WebhookServerHelper (not exported from the package root)
1664
+
1665
+ ```ts
1666
+ export type WebhookServerHelper = UnavailableHelper;
1667
+ ```
1668
+
1669
+ ### XHelper (not exported from the package root)
1670
+
1671
+ ```ts
1672
+ export type XHelper = UnavailableHelper;
1673
+ ```
1674
+
1675
+ ### ZendeskHelper (not exported from the package root)
1676
+
1677
+ ```ts
1678
+ export type ZendeskHelper = JournalHelper<ReturnType<typeof zendeskClient>>;
1679
+ ```
1680
+
1681
+ ### EnrollmentReceipt
1682
+
1683
+ ```ts
1684
+ export interface EnrollmentReceipt {
1685
+ /** Mount path for the token. The credential itself never enters the journal. */
1686
+ tokenPath: string;
1687
+ expiresAt: string;
1688
+ registerCommand: string;
1689
+ }
1690
+ ```
1691
+
1692
+ ### Heartbeat
1693
+
1694
+ ```ts
1695
+ export interface Heartbeat extends WorkerSummary {}
1696
+ ```
1697
+
1698
+ ### JournalStep
1699
+
1700
+ ```ts
1701
+ export interface JournalStep {
1702
+ id: string;
1703
+ type: "deterministic" | "llm" | "agent";
1704
+ completionReason: CompletionReason | null;
1705
+ }
1706
+ ```
1707
+
1708
+ ### RunJournal
1709
+
1710
+ ```ts
1711
+ export interface RunJournal {
1712
+ runId: string;
1713
+ steps: JournalStep[];
1714
+ completionReason: RunCompletionReason | null;
1715
+ }
1716
+ ```
1717
+
1718
+ ### ScheduleState
1719
+
1720
+ ```ts
1721
+ export interface ScheduleState {
1722
+ id: string;
1723
+ lastTriggerStatus: string | null;
1724
+ lastTriggeredRunId: string | null;
1725
+ lastTriggerError: string | null;
1726
+ }
1727
+ ```
1728
+
1729
+ ### WorkerSummary
1730
+
1731
+ ```ts
1732
+ export interface WorkerSummary {
1733
+ workerId: string;
1734
+ status: string;
1735
+ lastSeenAt: string | null;
1736
+ }
1737
+ ```
1738
+
1739
+ ### CloudBabysitterTurnCapability
1740
+
1741
+ ```ts
1742
+ export interface CloudBabysitterTurnCapability {
1743
+ queue(request: { readonly delivery: CloudBabysitterTurnDelivery }): PromiseLike<CloudBabysitterTurnReceipt>;
1744
+ }
1745
+ ```
1746
+
1747
+ ### CloudBabysitterTurnDelivery
1748
+
1749
+ ```ts
1750
+ /** Delivery-only request accepted by the host-owned native Babysitter adapter. */
1751
+ export interface CloudBabysitterTurnDelivery {
1752
+ readonly deliveryId: string;
1753
+ readonly provider: 'github';
1754
+ readonly eventType: string;
1755
+ readonly pullRequest: {
1756
+ readonly owner: string;
1757
+ readonly repository: string;
1758
+ readonly number: number;
1759
+ };
1760
+ }
1761
+ ```
1762
+
1763
+ ### CloudBabysitterTurnReceipt
1764
+
1765
+ ```ts
1766
+ /** The only successful native-turn outcomes; refusals reject the call. */
1767
+ export interface CloudBabysitterTurnReceipt {
1768
+ readonly receiptId: string;
1769
+ readonly status: 'queued' | 'duplicate';
1770
+ }
1771
+ ```
1772
+
1773
+ ### ActivityDuration
1774
+
1775
+ ```ts
1776
+ /** A duration in whole milliseconds or an unambiguous wall-clock literal. */
1777
+ export type ActivityDuration = number | string;
1778
+ ```
1779
+
1780
+ ### EventFrame
1781
+
1782
+ ```ts
1783
+ /**
1784
+ * Opaque provider event preserved by the journal. Providers may add fields;
1785
+ * bodies must re-read provider state instead of treating this payload as truth.
1786
+ */
1787
+ export interface EventFrame {
1788
+ readonly type: string;
1789
+ readonly payload?: unknown;
1790
+ readonly [field: string]: unknown;
1791
+ }
1792
+ ```
1793
+
1794
+ ### Wake
1795
+
1796
+ ```ts
1797
+ export type Wake =
1798
+ | { readonly kind: "events"; readonly events: readonly EventFrame[]; readonly offset: number }
1799
+ | { readonly kind: "idle" }
1800
+ | { readonly kind: "deadline"; readonly pending: { readonly from: number; readonly to: number } | null }
1801
+ | { readonly kind: "overflow"; readonly retained: number; readonly bytes: number; readonly from: number };
1802
+ ```
1803
+
1804
+ ### SlackReceipt
1805
+
1806
+ ```ts
1807
+ export interface SlackReceipt {
1808
+ channel: string;
1809
+ ts: string;
1810
+ ref: string;
1811
+ }
1812
+ ```
1813
+
1814
+ ### SlackBlock
1815
+
1816
+ ```ts
1817
+ /** Generated from the pinned Slack OpenAPI fragments in scripts/slack-message-schema.json. */
1818
+ export type SlackBlock = { type: string; [key: string]: unknown; };
1819
+ ```
1820
+
1821
+ ### SlackAttachment
1822
+
1823
+ ```ts
1824
+ export type SlackAttachment = { [key: string]: unknown; };
1825
+ ```
1826
+
1827
+ ### SlackPostMessage
1828
+
1829
+ ```ts
1830
+ /** Structured message content. Text supplies the notification/accessibility fallback. */
1831
+ export interface SlackPostMessage {
1832
+ text?: string;
1833
+ blocks?: SlackBlock[];
1834
+ attachments?: SlackAttachment[];
1835
+ }
1836
+ ```
1837
+
1838
+ ### SlackPostOptions
1839
+
1840
+ ```ts
1841
+ export interface SlackPostOptions extends Omit<SlackPostMessage, "text"> {
1842
+ replyTo?: string;
1843
+ }
1844
+ ```
1845
+
1846
+ ### MemoryFinding
1847
+
1848
+ ```ts
1849
+ export interface MemoryFinding {
1850
+ question: string;
1851
+ chosen: string;
1852
+ reasoning: string;
1853
+ alternatives?: string[];
1854
+ }
1855
+ ```
1856
+
1857
+ ### MemoryRecallOptions
1858
+
1859
+ ```ts
1860
+ /** Reads cannot widen the current flow's script scope. */
1861
+ export type MemoryRecallOptions = Omit<SearchOptions, "project">;
1862
+ ```
1863
+
1864
+ ### HistoryEntry
1865
+
1866
+ ```ts
1867
+ export type { HistoryEntry } from "ai-hist";
1868
+ ```
1869
+
1870
+ ### TrajectoryEntry
1871
+
1872
+ ```ts
1873
+ export type { TrajectoryEntry } from "ai-hist";
1874
+ ```
1875
+
1876
+ ### WebhookValue
1877
+
1878
+ ```ts
1879
+ export type WebhookValue = null | boolean | number | string
1880
+ | readonly WebhookValue[] | { readonly [key: string]: WebhookValue };
1881
+ ```
1882
+
1883
+ ### ProviderTriggerSource
1884
+
1885
+ ```ts
1886
+ /** A provider inbox subscription over an envelope's type and payload. */
1887
+ export interface ProviderTriggerSource<Provider extends string, Event extends string> extends WebhookTriggerSource {
1888
+ readonly name: Provider;
1889
+ readonly filter: WebhookFilter & { readonly provider: Provider; readonly type: Event };
1890
+ }
1891
+ ```
1892
+
1893
+ ### PluginMethod
1894
+
1895
+ ```ts
1896
+ /** Plugins augment Ctx in @relayflows/surface; no catch-all index signature. */
1897
+ export type PluginMethod<Args, Output = unknown> = (args: Args) => Step<Output>;
1898
+ ```
1899
+
1900
+ ### PluginPrimitive
1901
+
1902
+ ```ts
1903
+ export type PluginPrimitive = 'run' | 'llm' | 'agent' | 'effect' | 'wait';
1904
+ ```
1905
+
1906
+ ### UnavailableHelper (not exported from the package root)
1907
+
1908
+ ```ts
1909
+ export interface UnavailableHelper { readonly available: false }
1910
+ ```
1911
+
1912
+ ### JournalHelper (not exported from the package root)
1913
+
1914
+ ```ts
1915
+ /** Promise-returning client verbs become lazy, journal-owned steps. */
1916
+ export type JournalHelper<T> = {
1917
+ [K in keyof T]: T[K] extends (...args: infer A) => Promise<infer R>
1918
+ ? (...args: A) => Step<R>
1919
+ : T[K] extends (...args: infer A) => infer R ? (...args: A) => R
1920
+ : T[K] extends object ? JournalHelper<T[K]> : T[K];
1921
+ };
1922
+ ```
1923
+
1924
+ ### asanaClient
1925
+
1926
+ ```ts
1927
+ import { asanaClient } from "@relayfile/relay-helpers";
1928
+ ```
1929
+
1930
+ ### azureBlobClient
1931
+
1932
+ ```ts
1933
+ import { azureBlobClient } from "@relayfile/relay-helpers";
1934
+ ```
1935
+
1936
+ ### boxClient
1937
+
1938
+ ```ts
1939
+ import { boxClient } from "@relayfile/relay-helpers";
1940
+ ```
1941
+
1942
+ ### calendlyClient
1943
+
1944
+ ```ts
1945
+ import { calendlyClient } from "@relayfile/relay-helpers";
1946
+ ```
1947
+
1948
+ ### clickupClient
1949
+
1950
+ ```ts
1951
+ import { clickupClient } from "@relayfile/relay-helpers";
1952
+ ```
1953
+
1954
+ ### cloudflareClient
1955
+
1956
+ ```ts
1957
+ import { cloudflareClient } from "@relayfile/relay-helpers";
1958
+ ```
1959
+
1960
+ ### confluenceClient
1961
+
1962
+ ```ts
1963
+ import { confluenceClient } from "@relayfile/relay-helpers";
1964
+ ```
1965
+
1966
+ ### daytonaClient
1967
+
1968
+ ```ts
1969
+ import { daytonaClient } from "@relayfile/relay-helpers";
1970
+ ```
1971
+
1972
+ ### dropboxClient
1973
+
1974
+ ```ts
1975
+ import { dropboxClient } from "@relayfile/relay-helpers";
1976
+ ```
1977
+
1978
+ ### gcsClient
1979
+
1980
+ ```ts
1981
+ import { gcsClient } from "@relayfile/relay-helpers";
1982
+ ```
1983
+
1984
+ ### githubClient (not exported from the package root)
1985
+
1986
+ ```ts
1987
+ // Return type inferred from this implementation.
1988
+ import { githubClient as upstreamGithub } from "@relayfile/relay-helpers";
1989
+ import type { RelayClientOptions } from "@relayfile/relay-helpers/transport";
1990
+ /** Accept the conventional owner/repo shorthand as well as upstream arguments. */
1991
+ export function githubClient(options: RelayClientOptions) {
1992
+ const client = upstreamGithub(options);
1993
+ return { ...client, createIssue(args: { owner?: string; repo: string; title: string; body: string; labels?: string[] }) {
1994
+ const [owner, repo, extra] = args.repo.split('/');
1995
+ if (!args.owner && (!owner || !repo || extra)) throw new Error('github.createIssue requires repo: "owner/repo" or an explicit owner');
1996
+ return client.createIssue({ ...args, owner: args.owner ?? owner!, repo: args.owner ? args.repo : repo! });
1997
+ } };
1998
+ }
1999
+ ```
2000
+
2001
+ ### gitlabClient
2002
+
2003
+ ```ts
2004
+ import { gitlabClient } from "@relayfile/relay-helpers";
2005
+ ```
2006
+
2007
+ ### gmailClient
2008
+
2009
+ ```ts
2010
+ import { gmailClient } from "@relayfile/relay-helpers";
2011
+ ```
2012
+
2013
+ ### googleCalendarClient
2014
+
2015
+ ```ts
2016
+ import { googleCalendarClient } from "@relayfile/relay-helpers";
2017
+ ```
2018
+
2019
+ ### googleDriveClient
2020
+
2021
+ ```ts
2022
+ import { googleDriveClient } from "@relayfile/relay-helpers";
2023
+ ```
2024
+
2025
+ ### granolaClient
2026
+
2027
+ ```ts
2028
+ import { granolaClient } from "@relayfile/relay-helpers";
2029
+ ```
2030
+
2031
+ ### hubspotClient
2032
+
2033
+ ```ts
2034
+ import { hubspotClient } from "@relayfile/relay-helpers";
2035
+ ```
2036
+
2037
+ ### intercomClient
2038
+
2039
+ ```ts
2040
+ import { intercomClient } from "@relayfile/relay-helpers";
2041
+ ```
2042
+
2043
+ ### jiraClient
2044
+
2045
+ ```ts
2046
+ import { jiraClient } from "@relayfile/relay-helpers";
2047
+ ```
2048
+
2049
+ ### linearClient
2050
+
2051
+ ```ts
2052
+ import { linearClient } from "@relayfile/relay-helpers";
2053
+ ```
2054
+
2055
+ ### mailgunClient
2056
+
2057
+ ```ts
2058
+ import { mailgunClient } from "@relayfile/relay-helpers";
2059
+ ```
2060
+
2061
+ ### mixpanelClient
2062
+
2063
+ ```ts
2064
+ import { mixpanelClient } from "@relayfile/relay-helpers";
2065
+ ```
2066
+
2067
+ ### notionClient (not exported from the package root)
2068
+
2069
+ ```ts
2070
+ // Return type inferred from this implementation.
2071
+ import { notionClient as upstreamNotion, created } from "@relayfile/relay-helpers";
2072
+ import type { RelayClientOptions } from "@relayfile/relay-helpers/transport";
2073
+ export function notionClient(options: RelayClientOptions) {
2074
+ return { ...upstreamNotion(options), async appendBlock(args: { pageId: string; block: Record<string, unknown> }) {
2075
+ if (!options.transport) throw new Error('Notion requires a journal transport');
2076
+ // The adapter does not yet support this route. The runtime refuses it in
2077
+ // mount mode, while mock mode can exercise authoring and effect lowering.
2078
+ return created(options.transport.write({ provider: 'notion', resource: 'blocks',
2079
+ parameters: { pageId: args.pageId }, path: `/notion/pages/${encodeURIComponent(args.pageId)}/blocks`, body: { children: [args.block] } }));
2080
+ } };
2081
+ }
2082
+ ```
2083
+
2084
+ ### onedriveClient
2085
+
2086
+ ```ts
2087
+ import { onedriveClient } from "@relayfile/relay-helpers";
2088
+ ```
2089
+
2090
+ ### pipedriveClient
2091
+
2092
+ ```ts
2093
+ import { pipedriveClient } from "@relayfile/relay-helpers";
2094
+ ```
2095
+
2096
+ ### postgresClient
2097
+
2098
+ ```ts
2099
+ import { postgresClient } from "@relayfile/relay-helpers";
2100
+ ```
2101
+
2102
+ ### rampClient
2103
+
2104
+ ```ts
2105
+ import { rampClient } from "@relayfile/relay-helpers";
2106
+ ```
2107
+
2108
+ ### recallClient
2109
+
2110
+ ```ts
2111
+ import { recallClient } from "@relayfile/relay-helpers";
2112
+ ```
2113
+
2114
+ ### redditClient
2115
+
2116
+ ```ts
2117
+ import { redditClient } from "@relayfile/relay-helpers";
2118
+ ```
2119
+
2120
+ ### redisClient
2121
+
2122
+ ```ts
2123
+ import { redisClient } from "@relayfile/relay-helpers";
2124
+ ```
2125
+
2126
+ ### s3Client
2127
+
2128
+ ```ts
2129
+ import { s3Client } from "@relayfile/relay-helpers";
2130
+ ```
2131
+
2132
+ ### salesforceClient
2133
+
2134
+ ```ts
2135
+ import { salesforceClient } from "@relayfile/relay-helpers";
2136
+ ```
2137
+
2138
+ ### sendgridClient
2139
+
2140
+ ```ts
2141
+ import { sendgridClient } from "@relayfile/relay-helpers";
2142
+ ```
2143
+
2144
+ ### sharepointClient
2145
+
2146
+ ```ts
2147
+ import { sharepointClient } from "@relayfile/relay-helpers";
2148
+ ```
2149
+
2150
+ ### shortcutClient
2151
+
2152
+ ```ts
2153
+ import { shortcutClient } from "@relayfile/relay-helpers";
2154
+ ```
2155
+
2156
+ ### stripeClient (not exported from the package root)
2157
+
2158
+ ```ts
2159
+ // Return type inferred from this implementation.
2160
+ import { created } from "@relayfile/relay-helpers";
2161
+ import type { RelayClientOptions } from "@relayfile/relay-helpers/transport";
2162
+ export function stripeClient(options: RelayClientOptions) {
2163
+ return { createInvoice(args: { customer: string; auto_advance?: boolean; collection_method?: 'charge_automatically' | 'send_invoice'; days_until_due?: number; description?: string; metadata?: Record<string, string> }) {
2164
+ if (!options.transport) throw new Error('Stripe requires a journal transport');
2165
+ return created(options.transport.write({ provider: 'stripe', resource: 'invoices',
2166
+ parameters: {}, path: '/stripe/invoices', body: args }));
2167
+ } };
2168
+ }
2169
+ ```
2170
+
2171
+ ### teamsClient
2172
+
2173
+ ```ts
2174
+ import { teamsClient } from "@relayfile/relay-helpers";
2175
+ ```
2176
+
2177
+ ### telegramClient
2178
+
2179
+ ```ts
2180
+ import { telegramClient } from "@relayfile/relay-helpers";
2181
+ ```
2182
+
2183
+ ### zendeskClient
2184
+
2185
+ ```ts
2186
+ import { zendeskClient } from "@relayfile/relay-helpers";
2187
+ ```
2188
+
2189
+ ### SearchOptions
2190
+
2191
+ ```ts
2192
+ import type { SearchOptions } from "ai-hist";
2193
+ ```