@ironflow/browser 0.33.1 → 0.35.0

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/dist/client.d.ts CHANGED
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * Singleton client for browser-based real-time interactions with Ironflow.
5
5
  */
6
- import type { Logger, Run, ListRunsOptions, ListRunsResult, InvokeResult, EmitOptions, EmitResult, PublishOptions, PublishResult, TriggerBatchEvent, StoredEvent, ListEventsOptions, ListEventsResult, ListEventNamesOptions, ListEventNamesResult, RunStepsResult, RunStreamsResult, SubscriptionErrorInfo, SubscriptionCallbacks, Subscription, AckableSubscription, ConsumerGroup, ConsumerGroupConfig, UpdateConsumerGroupInput, ConnectionState, AppendEventInput, AppendOptions, AppendResult, ReadStreamOptions, StreamEvent, StreamInfo, StreamSnapshot, StreamListEntry, EntityHistoryEntry, EntitySubscribeOptions, GetProjectionOptions, ProjectionStatusInfo, WaitResult, WaitProgress, QuerySQLProjectionOptions, SQLProjectionQueryResult, ProjectionStateResult, ProjectionSubscriptionCallbacks, TimeTravelRunStateSnapshot, TimeTravelTimelineEvent, TimeTravelStepOutputSnapshot, APIKey, APIKeyWithSecret, CreateAPIKeyInput, Organization, CreateOrgInput, UpdateOrgInput, Role, CreateRoleInput, UpdateRoleInput, Policy, CreatePolicyInput, UpdatePolicyInput, EventSchema, RegisterSchemaInput, TestUpcastInput, UpcastResult, WebhookSource, CreateWebhookSourceInput, UpdateWebhookSourceInput, RotateWebhookSecretInput, DisableWebhookSignatureVerificationInput, WebhookDelivery, ListWebhookDeliveriesOptions, AuditTrailResult, GetAuditTrailOptions, ListAuditEventsOptions, Tenant, ProvisionTenantInput, ProvisionTenantResult, FunctionStatus, RegisteredFunction, FunctionHistoryEntry, ListFunctionHistoryOptions, ListFunctionHistoryResult } from "@ironflow/core";
7
- import { type EmitSyncResult } from "@ironflow/core";
6
+ import type { Logger, Run, ListRunsOptions, ListRunsResult, EmitOptions, EmitResult, PublishOptions, PublishResult, TriggerBatchEvent, StoredEvent, ListEventsOptions, ListEventsResult, ListEventNamesOptions, ListEventNamesResult, RunStepsResult, RunStreamsResult, SubscriptionErrorInfo, SubscriptionCallbacks, Subscription, AckableSubscription, ConsumerGroup, ConsumerGroupConfig, UpdateConsumerGroupInput, ConnectionState, AppendEventInput, AppendOptions, AppendResult, ReadStreamOptions, StreamEvent, StreamInfo, StreamSnapshot, StreamListEntry, EntityHistoryEntry, EntitySubscribeOptions, GetProjectionOptions, ProjectionStatusInfo, WaitResult, WaitProgress, QuerySQLProjectionOptions, SQLProjectionQueryResult, ProjectionStateResult, ProjectionSubscriptionCallbacks, TimeTravelRunStateSnapshot, TimeTravelTimelineEvent, TimeTravelStepOutputSnapshot, APIKey, APIKeyWithSecret, CreateAPIKeyInput, Organization, CreateOrgInput, UpdateOrgInput, Role, CreateRoleInput, UpdateRoleInput, Policy, CreatePolicyInput, UpdatePolicyInput, EventSchema, RegisterSchemaInput, TestUpcastInput, UpcastResult, WebhookSource, CreateWebhookSourceInput, UpdateWebhookSourceInput, RotateWebhookSecretInput, DisableWebhookSignatureVerificationInput, WebhookDelivery, ListWebhookDeliveriesOptions, AuditTrailResult, GetAuditTrailOptions, ListAuditEventsOptions, Tenant, ProvisionTenantInput, ProvisionTenantResult, FunctionStatus, RegisteredFunction, FunctionHistoryEntry, ListFunctionHistoryOptions, ListFunctionHistoryResult } from "@ironflow/core";
7
+ import { type EmitSyncResult, type InvokeSyncOptions, type InvokeSyncResult } from "@ironflow/core";
8
8
  import type { AuthConfig, IronflowConfig, IronflowConfigOptions } from "./config.js";
9
9
  import { type BrowserSubscribeOptions, type SubscriptionGroup } from "./subscription.js";
10
10
  import { BrowserKVClient } from "./kv.js";
@@ -154,19 +154,32 @@ declare class IronflowClient {
154
154
  */
155
155
  getActiveSubscriptionCount(): number;
156
156
  /**
157
- * Invoke a workflow function by ID
157
+ * Invoke a workflow function by ID and wait for its run to finish.
158
+ *
159
+ * Keyed by function ID, not by event name — exactly one run is created, so
160
+ * the outcome is unambiguous and travels as a throw: `RunFailedError` if the
161
+ * run failed, `RunCancelledError` if it was cancelled, `RunWaitTimeoutError`
162
+ * if the wait budget expired while the run was still going. Use `emit()` for
163
+ * the fire-and-forget, event-keyed, possibly-fan-out path.
164
+ *
165
+ * `options.timeout` is a server-side wait budget sent as `timeout_ms`, NOT a
166
+ * transport deadline: `InvokeFunctionSync` ties the run's lifetime to the
167
+ * request context, so aborting the HTTP request cancels the run. The
168
+ * transport deadline is therefore set to the budget plus
169
+ * `SYNC_TRANSPORT_HEADROOM`. `options.signal` is the deliberate exception —
170
+ * it aborts the request, and the server cancels the run in response.
158
171
  *
159
172
  * @example
160
173
  * ```typescript
161
- * const run = await ironflow.invoke<OrderInput, OrderOutput>('process-order', {
174
+ * const run = await ironflow.invoke<OrderInput>('process-order', {
162
175
  * data: { orderId: '123' }
163
176
  * });
177
+ * console.log(run.runId, run.output);
164
178
  * ```
165
179
  */
166
- invoke<TInput = unknown>(functionId: string, options: {
167
- data: TInput;
168
- idempotencyKey?: string;
169
- }): Promise<InvokeResult>;
180
+ invoke<TInput = unknown>(functionId: string, options: InvokeSyncOptions<TInput> & {
181
+ signal?: AbortSignal;
182
+ }): Promise<InvokeSyncResult>;
170
183
  /**
171
184
  * Get run status
172
185
  */
@@ -189,6 +202,12 @@ declare class IronflowClient {
189
202
  patchStep(stepId: string, output: Record<string, unknown>, reason?: string): Promise<void>;
190
203
  /**
191
204
  * Resume a paused or failed run
205
+ *
206
+ * On the Connect RPC since #1963, alongside getRun/cancelRun. It used to POST
207
+ * the REST route with its own hand-rolled fetch, which meant a second decode
208
+ * path (mapRestRunResponse, deleted) and an IronflowError carrying no HTTP
209
+ * status. It now shares request(), so a deduplicated resume surfaces as
210
+ * status 409 with retryable false.
192
211
  */
193
212
  resumeRun(runId: string, fromStep?: string): Promise<Run>;
194
213
  /**
@@ -290,20 +309,40 @@ declare class IronflowClient {
290
309
  /** List event names and counts for filter UIs. */
291
310
  listEventNames(options?: ListEventNamesOptions): Promise<ListEventNamesResult>;
292
311
  /**
293
- * Emit an event synchronously — waits for the triggered run to complete and returns the result.
312
+ * Emit an event synchronously — waits for every triggered run and returns one
313
+ * result per run.
294
314
  *
295
- * Calls the TriggerSync endpoint, which blocks until the run finishes or the timeout elapses.
296
- * Throws RunFailedError if the run fails, RunCancelledError if it is cancelled.
315
+ * An event can match several triggers, so this returns an array: one
316
+ * `EmitSyncResult` per matched run, in the order the server reported them.
317
+ * An event that matches nothing returns `[]` — that is a legitimate outcome,
318
+ * not an error.
319
+ *
320
+ * Run outcomes are **never thrown**. Inspect `status`, `error` and
321
+ * `waitTimedOut` per result; a fan-out where one run fails and another
322
+ * succeeds is only readable that way. Transport, protocol and validation
323
+ * failures still throw. Use `invoke()` when you want the throwing shape —
324
+ * it targets one function by ID and so has exactly one outcome to report.
325
+ *
326
+ * `options.timeout` is the server-side wait budget (`timeout_ms`); the
327
+ * transport deadline is that plus `SYNC_TRANSPORT_HEADROOM`, so an expired
328
+ * budget comes back as `waitTimedOut` with the run still alive rather than
329
+ * as an aborted request.
297
330
  *
298
331
  * @example
299
332
  * ```typescript
300
- * const result = await ironflow.emitSync("order.placed", { orderId: "123" });
301
- * console.log("Output:", result.output);
333
+ * const results = await ironflow.emitSync("order.placed", { orderId: "123" });
334
+ * for (const r of results) {
335
+ * if (r.waitTimedOut) console.log(r.functionId, "still running");
336
+ * else if (r.status === "failed") console.log(r.functionId, r.error?.message);
337
+ * else console.log(r.functionId, r.output);
338
+ * }
302
339
  * ```
303
340
  */
304
341
  emitSync(eventName: string, data: unknown, options?: {
305
342
  timeout?: number;
306
- }): Promise<EmitSyncResult>;
343
+ idempotencyKey?: string;
344
+ version?: number;
345
+ }): Promise<EmitSyncResult[]>;
307
346
  /**
308
347
  * Join a consumer group for load-balanced event processing
309
348
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,GAAG,EAEH,eAAe,EACf,cAAc,EACd,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,UAAU,EACV,YAAY,EACZ,yBAAyB,EACzB,wBAAwB,EAExB,qBAAqB,EACrB,+BAA+B,EAC/B,0BAA0B,EAC1B,uBAAuB,EACvB,4BAA4B,EAC5B,MAAM,EACN,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,IAAI,EACJ,eAAe,EACf,eAAe,EACf,MAAM,EACN,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,wCAAwC,EACxC,eAAe,EACf,4BAA4B,EAE5B,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,MAAM,EACN,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EA0BL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EAUtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAErB,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAK3B,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAgBhF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,eAAuC,CAAC;AAkBxE;;GAEG;AACH,cAAM,cAAc;IAClB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,iBAAiB,CAA6B;IAEtD;;;;;;;;;;;;;OAaG;IACH,SAAgB,MAAM,EAAE,eAAe,CAOpC;IAEH;;;;OAIG;IACH,SAAS,CAAC,OAAO,GAAE,qBAA0B,GAAG,IAAI;IAyDpD;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI;IAM3C;;;;;OAKG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;;;;;;;;;;OAWG;IACG,eAAe,IAAI,OAAO,CAAC,YAAY,GAAG,WAAW,CAAC;IAyC5D;;OAEG;IACH,SAAS,IAAI,cAAc;IAW3B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAAG,MAAM,IAAI;IAK1E;;OAEG;IACH,IAAI,eAAe,IAAI,eAAe,CAKrC;IAMD;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,SAAS,CAAC,CAAC,GAAG,OAAO,EACnB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,mBAAmB,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,uBAAuB,GACtE,OAAO,CAAC,YAAY,GAAG,mBAAmB,CAAC;IAK9C;;;;;;;;;;;OAWG;IACH,iBAAiB,IAAI,iBAAiB;IAKtC;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,GAAG,MAAM,IAAI;IAKrE;;;OAGG;IACH,0BAA0B,IAAI,MAAM;IAQpC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,MAAM,CAAC,MAAM,GAAG,OAAO,EAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC5D,OAAO,CAAC,gBAAgB,CAAC;IA+C5B;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAazC,gDAAgD;IAC1C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAYzD,kDAAkD;IAC5C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAS7D;;OAEG;IACG,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAsBlE;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAa7D;;OAEG;IACG,SAAS,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAoChB;;;;;;;;OAQG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAa/D;;OAEG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAsC1D;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAC3C,KAAK,EAAE,KAAK,CAAC;YACX,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,OAAO,CAAC;YAChB,QAAQ,EAAE,OAAO,CAAC;YAClB,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;QACH,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IA4DF;;OAEG;IACG,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC;IAyDvD;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,0BAA0B,CAAC;IA0FxF;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;IA0DvE;;OAEG;IACG,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,IAAI,GACd,OAAO,CAAC,4BAA4B,CAAC;IA0DxC,uCAAuC;IACjC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IASlE,4CAA4C;IACtC,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC,GAC7C,OAAO,CAAC,kBAAkB,CAAC;IAY9B,gDAAgD;IAC1C,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQvD,4DAA4D;IACtD,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,yBAAyB,CAAC;IAkBrC,mEAAmE;IAC7D,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC;IAWhC,oEAAoE;IAC9D,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,kBAAkB,CAAC;IAY9B,iCAAiC;IAC3B,aAAa,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAkCzC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAkCvC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA2B/E;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA+B/F;;;;;;;;;;OAUG;IACG,IAAI,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC;IAyBtB;;;OAGG;IACG,OAAO,CACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC;IAoBzB,8CAA8C;IACxC,YAAY,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAqBtE,uDAAuD;IACjD,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqC5E,qCAAqC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IASrD,kDAAkD;IAC5C,cAAc,CAClB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC;IAqBhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,QAAQ,CACZ,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACxE,OAAO,CAAC,cAAc,EAAE,CAAC;IAoC5B;;OAEG;IACG,iBAAiB,CAAC,CAAC,GAAG,OAAO,EACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,mBAAmB,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAAG,uBAAuB,GACtE,OAAO,CAAC,mBAAmB,CAAC;IAY/B,2CAA2C;IAC3C,QAAQ,CAAC,cAAc;yBACE,mBAAmB,KAAG,OAAO,CAAC,aAAa,CAAC;oBAyBjD,MAAM,yBAA0B,OAAO,CAAC,aAAa,CAAC;2BAQ/C,MAAM,KAAG,OAAO,CAAC,aAAa,EAAE,CAAC;uBAoBlD,MAAM,SACL,wBAAwB,yBAE9B,OAAO,CAAC,aAAa,CAAC;uBAsCJ,MAAM,yBAA0B,OAAO,CAAC,IAAI,CAAC;MAOlE;IAMF;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO;QACL;;WAEG;2BAES,MAAM,SACT,gBAAgB,YACb,aAAa,KACtB,OAAO,CAAC,YAAY,CAAC;QAyBxB;;WAEG;yBAES,MAAM,YACN,iBAAiB,KAC1B,OAAO,CAAC;YAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;QAoCzD;;;;;;;;;;;;;WAaG;4BACuB,MAAM,KAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;QA8B7D;;WAEG;mCAES,MAAM,SACT;YACL,UAAU,EAAE,MAAM,CAAC;YACnB,aAAa,EAAE,MAAM,CAAC;YACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SAChC,KACA,OAAO,CAAC;YAAE,UAAU,EAAE,MAAM,CAAA;SAAE,CAAC;QAclC;;WAEG;gCAES,MAAM,YACN;YAAE,aAAa,CAAC,EAAE,MAAM,CAAA;SAAE,KACnC,OAAO,CAAC,cAAc,CAAC;QAwB1B,8DAA8D;2BACvC,OAAO,CAAC,eAAe,EAAE,CAAC;QAgBjD,mDAAmD;qCAChB,MAAM,KAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAgBzE;;;;;;;;;;;;;;WAcG;8BAES,MAAM,WACP,sBAAsB,KAC9B,OAAO,CAAC,YAAY,CAAC;MA4BxB;IAMF;;;;;;;;;;;OAWG;IACG,aAAa,CAAC,MAAM,GAAG,OAAO,EAClC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IA4CzC;;;;;;;;;;;OAWG;IACG,kBAAkB,CACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,wBAAwB,CAAC;IAuBpC;;;;;;;;OAQG;IACG,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA8CtE;;;;;;OAMG;IACG,wBAAwB,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GACxE,OAAO,CAAC,UAAU,CAAC;IAwCtB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACI,8BAA8B,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,WAAW,CAAC;KACtB,GACA,aAAa,CAAC,YAAY,CAAC;IA0C9B;;;;;OAKG;IACG,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACpD,OAAO,CAAC,UAAU,CAAC;IAsCtB;;;;;;;;OAQG;IACG,eAAe,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IA4CxD;;;;;;;;;;;;;;;;;;OAkBG;IACG,qBAAqB,CAAC,MAAM,GAAG,OAAO,EAC1C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,+BAA+B,CAAC,MAAM,CAAC,EAClD,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAChD,OAAO,CAAC,YAAY,CAAC;IAiCxB;;;;;;;;;;;;;;;;OAgBG;IACH,EAAE,IAAI,eAAe;IASrB;;;;;;;;;;;;;;;OAeG;IACH,aAAa,IAAI,mBAAmB;IAWpC;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,OAAO;QACd;;WAEG;wBACmB,iBAAiB,KAAG,OAAO,CAAC,gBAAgB,CAAC;QAKnE;;WAEG;oBACa,OAAO,CAAC,MAAM,EAAE,CAAC;QAKjC;;WAEG;kBACa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;QAKxC;;WAEG;qBACgB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;QAKzC;;WAEG;qBACgB,MAAM,KAAG,OAAO,CAAC,gBAAgB,CAAC;MAOrD;IAEF;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,IAAI;QACX;;WAEG;wBACmB,cAAc,KAAG,OAAO,CAAC,YAAY,CAAC;QAK5D;;WAEG;oBACa,OAAO,CAAC,YAAY,EAAE,CAAC;QAKvC;;WAEG;kBACa,MAAM,KAAG,OAAO,CAAC,YAAY,CAAC;QAK9C;;WAEG;qBACgB,MAAM,SAAS,cAAc,KAAG,OAAO,CAAC,YAAY,CAAC;QASxE;;WAEG;qBACgB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;MAIzC;IAEF;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,KAAK;QACZ;;WAEG;wBACmB,eAAe,KAAG,OAAO,CAAC,IAAI,CAAC;QAKrD;;WAEG;uBACkB,MAAM,KAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAM7C;;WAEG;kBACa,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;QAKtC;;WAEG;qBACgB,MAAM,SAAS,eAAe,KAAG,OAAO,CAAC,IAAI,CAAC;QASjE;;WAEG;qBACgB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;QAKzC;;WAEG;+BAC0B,MAAM,YAAY,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;QASrE;;WAEG;+BAC0B,MAAM,YAAY,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;QAQrE,wCAAwC;+BACX,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAAC;MAQvD;IAEF;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,QAAQ;QACf;;WAEG;wBACmB,iBAAiB,KAAG,OAAO,CAAC,MAAM,CAAC;QAKzD;;WAEG;uBACkB,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAM/C;;WAEG;kBACa,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;QAKxC;;WAEG;qBACgB,MAAM,SAAS,iBAAiB,KAAG,OAAO,CAAC,MAAM,CAAC;QASrE;;WAEG;qBACgB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;MAIzC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,QAAQ,CAAC,OAAO;QACd,2EAA2E;0BACnD,mBAAmB,KAAG,OAAO,CAAC,WAAW,CAAC;QAQlE,wCAAwC;oBACxB,OAAO,CAAC,WAAW,EAAE,CAAC;QAKtC,wDAAwD;oBACtC,MAAM,KAAG,OAAO,CAAC,WAAW,CAAC;QAI/C,gDAAgD;2BACvB,MAAM,WAAW,MAAM,KAAG,OAAO,CAAC,WAAW,CAAC;QAIvE,mDAAmD;uBAC9B,MAAM,WAAW,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;QAI5D,gEAAgE;4BACtC,eAAe,KAAG,OAAO,CAAC,YAAY,CAAC;MAIjE;IAMF;;;;;;;;;;;;;OAaG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAyC7F,+CAA+C;IACzC,eAAe,CACnB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,gBAAgB,CAAC;IA2B5B;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,QAAQ;QACf;;;;;;WAMG;wBACmB,wBAAwB,KAAG,OAAO,CAAC,aAAa,CAAC;QAkBvE,2CAA2C;wBACrB,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC;QAUrD;;;;;;WAMG;8BACyB,wBAAwB,KAAG,OAAO,CAAC,aAAa,CAAC;QAoB7E;;;WAGG;8BACyB,wBAAwB,KAAG,OAAO,CAAC,aAAa,CAAC;QAkB7E;;;WAGG;+BAEG,MAAM,sBACU,MAAM,KACzB,OAAO,CAAC,aAAa,CAAC;QAazB;;;;WAIG;8CAEM,wCAAwC,KAC9C,OAAO,CAAC,aAAa,CAAC;QAiBzB;;;;;;WAMG;gCAEG,MAAM,sBACU,MAAM,KACzB,OAAO,CAAC,aAAa,CAAC;QAazB,0CAA0C;2BACnB,OAAO,CAAC,aAAa,EAAE,CAAC;QAQ/C,oCAAoC;2BACX,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;QAQ/C,sDAAsD;gCACxB,4BAA4B,KAAG,OAAO,CAAC;YACnE,UAAU,EAAE,eAAe,EAAE,CAAC;YAC9B,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC;MAgBF;IAEF;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO;QACd,yCAAyC;oBACzB,OAAO,CAAC,MAAM,EAAE,CAAC;QAIjC,6EAA6E;2BACpD,oBAAoB,KAAG,OAAO,CAAC,qBAAqB,CAAC;MAgB9E;IAMF;;OAEG;IACH,MAAM,CAAC,QAAQ;;;;;;;;;;;;;;MAAY;IAM3B,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,OAAO;IAcf;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAMxB,OAAO,CAAC,uBAAuB;IAgB/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;YACW,IAAI;IA6GlB;;;;;OAKG;YACW,OAAO;IAqDrB;;;;;;;;;;;;;OAaG;IACG,CAAC,mBAAmB,CAAC,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAkCxD;;;;OAIG;YACW,aAAa;IAoB3B;;;;;;;;;;;OAWG;YACW,WAAW;IA6CzB,OAAO,CAAC,cAAc;CAmBvB;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,gBAAuB,CAAC;AAE7C;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,CAAC"}
package/dist/client.js CHANGED
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Singleton client for browser-based real-time interactions with Ironflow.
5
5
  */
6
- import { NotConfiguredError, IronflowError, RunFailedError, RunCancelledError, UnauthenticatedError, EnterpriseRequiredError, UnauthorizedError, ValidationError, createLogger, createNoopLogger, DEFAULT_TIMEOUTS, HEADERS, TriggerResponseSchema, TriggerSyncResponseSchema, RunResponseSchema, ListRunsResponseSchema, RunStatusSchema, ErrorResponseSchema, safeJsonParse, patterns, peelProjectionEnvelope, webhookVerifyConfigToWire, webhookGraceToWire, webhookSourceFromWire, webhookDeliveryFromWire, registeredFunctionFromWire, functionHistoryEntryFromWire, storedEventFromWire, runStepFromWire, consumerGroupFromWire, } from "@ironflow/core";
6
+ import { NotConfiguredError, IronflowError, RunWaitTimeoutError, RunFailedError, RunCancelledError, UnauthenticatedError, EnterpriseRequiredError, UnauthorizedError, ValidationError, createLogger, createNoopLogger, DEFAULT_TIMEOUTS, HEADERS, API_ENDPOINTS, TriggerResponseSchema, TriggerSyncResponseSchema, InvokeFunctionSyncResponseSchema, RunResponseSchema, ListRunsResponseSchema, runStatusFromWire, runStatusToWire, ErrorResponseSchema, safeJsonParse, patterns, peelProjectionEnvelope, webhookVerifyConfigToWire, webhookGraceToWire, webhookSourceFromWire, webhookDeliveryFromWire, registeredFunctionFromWire, functionHistoryEntryFromWire, storedEventFromWire, runStepFromWire, consumerGroupFromWire, } from "@ironflow/core";
7
7
  import { mergeConfig, warnAboutLongLivedBrowserKey } from "./config.js";
8
8
  import { SubscriptionManager, } from "./subscription.js";
9
9
  import { createWebSocketTransport } from "./transport/websocket.js";
@@ -310,25 +310,56 @@ class IronflowClient {
310
310
  // Workflow Operations
311
311
  // ============================================================================
312
312
  /**
313
- * Invoke a workflow function by ID
313
+ * Invoke a workflow function by ID and wait for its run to finish.
314
+ *
315
+ * Keyed by function ID, not by event name — exactly one run is created, so
316
+ * the outcome is unambiguous and travels as a throw: `RunFailedError` if the
317
+ * run failed, `RunCancelledError` if it was cancelled, `RunWaitTimeoutError`
318
+ * if the wait budget expired while the run was still going. Use `emit()` for
319
+ * the fire-and-forget, event-keyed, possibly-fan-out path.
320
+ *
321
+ * `options.timeout` is a server-side wait budget sent as `timeout_ms`, NOT a
322
+ * transport deadline: `InvokeFunctionSync` ties the run's lifetime to the
323
+ * request context, so aborting the HTTP request cancels the run. The
324
+ * transport deadline is therefore set to the budget plus
325
+ * `SYNC_TRANSPORT_HEADROOM`. `options.signal` is the deliberate exception —
326
+ * it aborts the request, and the server cancels the run in response.
314
327
  *
315
328
  * @example
316
329
  * ```typescript
317
- * const run = await ironflow.invoke<OrderInput, OrderOutput>('process-order', {
330
+ * const run = await ironflow.invoke<OrderInput>('process-order', {
318
331
  * data: { orderId: '123' }
319
332
  * });
333
+ * console.log(run.runId, run.output);
320
334
  * ```
321
335
  */
322
336
  async invoke(functionId, options) {
323
337
  this.ensureConfigured();
324
- const response = await this.request(TriggerResponseSchema, "POST", "/ironflow.v1.IronflowService/Trigger", {
325
- event: functionId,
338
+ const timeout = options.timeout ?? DEFAULT_TIMEOUTS.INVOKE_FUNCTION_SYNC;
339
+ const response = await this.request(InvokeFunctionSyncResponseSchema, "POST", API_ENDPOINTS.INVOKE_FUNCTION_SYNC, {
340
+ function_id: functionId,
326
341
  data: options.data,
342
+ timeout_ms: timeout,
327
343
  idempotency_key: options.idempotencyKey,
328
- });
344
+ metadata: options.metadata,
345
+ }, timeout + DEFAULT_TIMEOUTS.SYNC_TRANSPORT_HEADROOM, options.signal);
346
+ const result = response.result;
347
+ if (result.waitTimedOut) {
348
+ throw new RunWaitTimeoutError(result.runId, result.functionId, result.status, timeout);
349
+ }
350
+ if (result.status === "failed") {
351
+ throw new RunFailedError(result.runId, result.output, result.error?.message);
352
+ }
353
+ if (result.status === "cancelled") {
354
+ throw new RunCancelledError(result.runId);
355
+ }
329
356
  return {
330
- runIds: response.runIds ?? [],
331
- eventId: response.eventId,
357
+ runId: result.runId,
358
+ functionId: result.functionId,
359
+ status: result.status,
360
+ output: result.output,
361
+ error: result.error,
362
+ durationMs: result.durationMs,
332
363
  };
333
364
  }
334
365
  /**
@@ -361,7 +392,7 @@ class IronflowClient {
361
392
  this.ensureConfigured();
362
393
  const response = await this.request(ListRunsResponseSchema, "POST", "/ironflow.v1.IronflowService/ListRuns", {
363
394
  function_id: options?.functionId,
364
- status: options?.status?.toUpperCase(),
395
+ status: options?.status ? runStatusToWire(options.status) : undefined,
365
396
  limit: options?.limit,
366
397
  cursor: options?.cursor,
367
398
  });
@@ -411,34 +442,17 @@ class IronflowClient {
411
442
  }
412
443
  /**
413
444
  * Resume a paused or failed run
445
+ *
446
+ * On the Connect RPC since #1963, alongside getRun/cancelRun. It used to POST
447
+ * the REST route with its own hand-rolled fetch, which meant a second decode
448
+ * path (mapRestRunResponse, deleted) and an IronflowError carrying no HTTP
449
+ * status. It now shares request(), so a deduplicated resume surfaces as
450
+ * status 409 with retryable false.
414
451
  */
415
452
  async resumeRun(runId, fromStep) {
416
453
  this.ensureConfigured();
417
- const url = `${this.config.serverUrl}/api/v1/runs/resume`;
418
- const timeout = this.config.timeout ?? DEFAULT_TIMEOUTS.CLIENT;
419
- const controller = new AbortController();
420
- const timeoutId = setTimeout(() => controller.abort(), timeout);
421
- try {
422
- const headers = {
423
- "Content-Type": "application/json",
424
- [HEADERS.ENVIRONMENT]: this.config.environment,
425
- };
426
- this.applyAuthHeader(headers);
427
- const response = await fetch(url, {
428
- method: "POST",
429
- headers,
430
- body: JSON.stringify({ run_id: runId, from_step: fromStep || "" }),
431
- signal: controller.signal,
432
- });
433
- if (!response.ok) {
434
- const error = safeJsonParse(await response.text());
435
- throw new IronflowError(error?.message || `Resume run failed: ${response.status}`, { code: error?.code || "RESUME_FAILED" });
436
- }
437
- return response.json();
438
- }
439
- finally {
440
- clearTimeout(timeoutId);
441
- }
454
+ const response = await this.request(RunResponseSchema, "POST", "/ironflow.v1.IronflowService/ResumeRun", { runId, fromStep: fromStep || "" });
455
+ return this.mapRunResponse(response);
442
456
  }
443
457
  /**
444
458
  * Pause a running workflow at the next step boundary (scoped injection).
@@ -874,7 +888,9 @@ class IronflowClient {
874
888
  const response = await this.request(TriggerResponseSchema, "POST", "/ironflow.v1.PubSubService/Emit", {
875
889
  event: eventName,
876
890
  data,
877
- ...(options?.version ? { version: options.version } : {}),
891
+ // See triggerBatch: `!== undefined`, so a negative reaches the
892
+ // server rather than being silently emitted as version 1.
893
+ ...(options?.version !== undefined ? { version: options.version } : {}),
878
894
  idempotency_key: options?.idempotencyKey,
879
895
  metadata: options?.metadata,
880
896
  namespace: options?.namespace,
@@ -983,42 +999,56 @@ class IronflowClient {
983
999
  };
984
1000
  }
985
1001
  /**
986
- * Emit an event synchronously — waits for the triggered run to complete and returns the result.
1002
+ * Emit an event synchronously — waits for every triggered run and returns one
1003
+ * result per run.
1004
+ *
1005
+ * An event can match several triggers, so this returns an array: one
1006
+ * `EmitSyncResult` per matched run, in the order the server reported them.
1007
+ * An event that matches nothing returns `[]` — that is a legitimate outcome,
1008
+ * not an error.
987
1009
  *
988
- * Calls the TriggerSync endpoint, which blocks until the run finishes or the timeout elapses.
989
- * Throws RunFailedError if the run fails, RunCancelledError if it is cancelled.
1010
+ * Run outcomes are **never thrown**. Inspect `status`, `error` and
1011
+ * `waitTimedOut` per result; a fan-out where one run fails and another
1012
+ * succeeds is only readable that way. Transport, protocol and validation
1013
+ * failures still throw. Use `invoke()` when you want the throwing shape —
1014
+ * it targets one function by ID and so has exactly one outcome to report.
1015
+ *
1016
+ * `options.timeout` is the server-side wait budget (`timeout_ms`); the
1017
+ * transport deadline is that plus `SYNC_TRANSPORT_HEADROOM`, so an expired
1018
+ * budget comes back as `waitTimedOut` with the run still alive rather than
1019
+ * as an aborted request.
990
1020
  *
991
1021
  * @example
992
1022
  * ```typescript
993
- * const result = await ironflow.emitSync("order.placed", { orderId: "123" });
994
- * console.log("Output:", result.output);
1023
+ * const results = await ironflow.emitSync("order.placed", { orderId: "123" });
1024
+ * for (const r of results) {
1025
+ * if (r.waitTimedOut) console.log(r.functionId, "still running");
1026
+ * else if (r.status === "failed") console.log(r.functionId, r.error?.message);
1027
+ * else console.log(r.functionId, r.output);
1028
+ * }
995
1029
  * ```
996
1030
  */
997
1031
  async emitSync(eventName, data, options) {
998
1032
  this.ensureConfigured();
999
- const timeout = options?.timeout ?? 30000;
1000
- const response = await this.request(TriggerSyncResponseSchema, "POST", "/ironflow.v1.IronflowService/TriggerSync", { event: eventName, data, timeout_ms: timeout });
1001
- const results = response.results;
1002
- if (!results?.length) {
1003
- throw new IronflowError("No results returned from TriggerSync", { code: "NO_RESULTS", retryable: false });
1004
- }
1005
- const result = results[0];
1006
- if (!result) {
1007
- throw new IronflowError("No results returned from TriggerSync", { code: "NO_RESULTS", retryable: false });
1008
- }
1009
- if (result.status === "failed") {
1010
- throw new RunFailedError(result.runId, result.error);
1011
- }
1012
- if (result.status === "cancelled") {
1013
- throw new RunCancelledError(result.runId);
1014
- }
1015
- return {
1033
+ const timeout = options?.timeout ?? DEFAULT_TIMEOUTS.TRIGGER_SYNC;
1034
+ const response = await this.request(TriggerSyncResponseSchema, "POST", API_ENDPOINTS.TRIGGER_SYNC, {
1035
+ event: eventName,
1036
+ data,
1037
+ timeout_ms: timeout,
1038
+ idempotency_key: options?.idempotencyKey,
1039
+ // See the node twin: undefined is omitted, a negative is forwarded so
1040
+ // the server reports it rather than the client swallowing it.
1041
+ version: options?.version,
1042
+ }, timeout + DEFAULT_TIMEOUTS.SYNC_TRANSPORT_HEADROOM);
1043
+ return (response.results ?? []).map((result) => ({
1016
1044
  runId: result.runId,
1017
1045
  functionId: result.functionId,
1018
1046
  status: result.status,
1019
1047
  output: result.output,
1048
+ error: result.error,
1020
1049
  durationMs: result.durationMs,
1021
- };
1050
+ waitTimedOut: result.waitTimedOut,
1051
+ }));
1022
1052
  }
1023
1053
  // ============================================================================
1024
1054
  // Consumer Groups
@@ -2348,11 +2378,19 @@ class IronflowClient {
2348
2378
  * extends `IronflowError`, so the single `instanceof` guard covers all of
2349
2379
  * them and they are rethrown untouched.
2350
2380
  */
2351
- async send(method, path, body, handle) {
2381
+ async send(method, path, body, handle, timeoutOverrideMs, signal) {
2382
+ // An already-aborted signal fires no `abort` event, so it has to be read
2383
+ // rather than listened for — otherwise the request goes out and only the
2384
+ // response is discarded.
2385
+ if (signal?.aborted) {
2386
+ throw new DOMException("Aborted", "AbortError");
2387
+ }
2352
2388
  const url = `${this.config.serverUrl}${path}`;
2353
- const timeout = this.config.timeout ?? DEFAULT_TIMEOUTS.CLIENT;
2389
+ const timeout = timeoutOverrideMs ?? this.config.timeout ?? DEFAULT_TIMEOUTS.CLIENT;
2354
2390
  const controller = new AbortController();
2355
2391
  const timeoutId = setTimeout(() => controller.abort(), timeout);
2392
+ const onExternalAbort = () => controller.abort();
2393
+ signal?.addEventListener("abort", onExternalAbort, { once: true });
2356
2394
  try {
2357
2395
  const headers = {
2358
2396
  [HEADERS.ENVIRONMENT]: this.config.environment,
@@ -2394,6 +2432,15 @@ class IronflowClient {
2394
2432
  if (error instanceof IronflowError) {
2395
2433
  throw error;
2396
2434
  }
2435
+ // Caller cancellation and deadline expiry share one AbortController, so
2436
+ // discriminate on the caller's signal, not on the error: surfacing an
2437
+ // explicit abort as `code: "TIMEOUT"` (retryable) would invite a retry of
2438
+ // something the caller just cancelled. Read before the AbortError shape
2439
+ // check — a rejected `fetch` is not guaranteed to hand back something
2440
+ // that survives an `instanceof Error` across realms.
2441
+ if (signal?.aborted) {
2442
+ throw new DOMException("Aborted", "AbortError");
2443
+ }
2397
2444
  if (error instanceof Error && error.name === "AbortError") {
2398
2445
  throw new IronflowError(`Request timeout after ${timeout}ms for ${method} ${path}`, {
2399
2446
  code: "TIMEOUT",
@@ -2410,6 +2457,9 @@ class IronflowClient {
2410
2457
  }
2411
2458
  finally {
2412
2459
  clearTimeout(timeoutId);
2460
+ // A caller-owned controller can outlive many requests; leaving the
2461
+ // listener attached would leak one per call.
2462
+ signal?.removeEventListener("abort", onExternalAbort);
2413
2463
  }
2414
2464
  }
2415
2465
  /**
@@ -2418,7 +2468,7 @@ class IronflowClient {
2418
2468
  * Reads the body exactly once and reuses the text for both the error path
2419
2469
  * and the success parse.
2420
2470
  */
2421
- async request(schema, method, path, body) {
2471
+ async request(schema, method, path, body, timeoutOverrideMs, signal) {
2422
2472
  return this.send(method, path, body, async (response) => {
2423
2473
  const responseBody = await response.text();
2424
2474
  if (!response.ok) {
@@ -2444,7 +2494,7 @@ class IronflowClient {
2444
2494
  throw new ValidationError(`Invalid response from server: ${issues}`);
2445
2495
  }
2446
2496
  return result.data;
2447
- });
2497
+ }, timeoutOverrideMs, signal);
2448
2498
  }
2449
2499
  /**
2450
2500
  * Replay a write that the offline queue stored earlier (ADR 0053).
@@ -2549,10 +2599,7 @@ class IronflowClient {
2549
2599
  });
2550
2600
  }
2551
2601
  mapRunResponse(response) {
2552
- // ConnectRPC returns proto enum strings like "RUN_STATUS_COMPLETED" — normalize to "completed"
2553
- const rawStatus = response.status.toLowerCase().replace(/^run_status_/, "");
2554
- const statusResult = RunStatusSchema.safeParse(rawStatus);
2555
- const status = statusResult.success ? statusResult.data : "failed";
2602
+ const status = runStatusFromWire(response.status);
2556
2603
  return {
2557
2604
  id: response.id,
2558
2605
  functionId: response.functionId,