Commit Graph

1400 Commits

Author SHA1 Message Date
Nathan Rajlich 7ff68d1753 Pass tsconfig to esbuild for support of "paths" aliases (#705) 2025-12-31 01:00:24 -08:00
Nathan Rajlich 9b1640d76e Do not include initial attempt in step function maxRetries count (#703)
Closes #592.
2025-12-31 00:59:50 -08:00
Vercel Release Bot b49bb4eb54 Version Packages (beta) (#707) 2025-12-30 11:01:55 +01:00
JJ Kasper 851c0203fe Validate cached workflows/steps and reduce build debounce (#700) 2025-12-30 10:36:35 +01:00
Nathan Rajlich 2dbe49495d Fix race condition in streamer when multiple writes share a promise runId (#704)
ULID generation now happens synchronously before awaiting the runId, ensuring chunks maintain their call order.
2025-12-30 10:35:18 +01:00
Vercel Release Bot 62cde6dd8d Version Packages (beta) (#696) 2025-12-28 18:07:16 +01:00
Chris Tate 25bfa52d02 Fix: Handle object-style finishReason for AI SDK v5/v6 compatibility (#695)
---------

Signed-off-by: Peter Wielander <mittgfu@gmail.com>
Co-authored-by: Peter Wielander <mittgfu@gmail.com>
2025-12-28 18:00:25 +01:00
Peter Wielander 80955e7212 [cli] [web] Allow opening web UI without config validation, show better UI when runs can't be found (#684) 2025-12-28 17:55:24 +01:00
Peter Wielander f989613d70 [web] Add error boundaries around UI in run detail view (#694)
Signed-off-by: Peter Wielander <mittgfu@gmail.com>
2025-12-28 14:08:11 +01:00
Vercel Release Bot e6b1bef5bb Version Packages (beta) (#693) 2025-12-27 12:40:09 -08:00
Karthik Kalyanaraman e3f0390469 Workflows graph extractor (#455)
---------

Signed-off-by: Karthik Kalyanaraman <karthik@scale3labs.com>
2025-12-27 16:52:19 +01:00
Chris Tate b97b87b4fe Add AI SDK v6 support (#692) 2025-12-27 16:24:54 +01:00
Vercel Release Bot 96a4d3a2fd Version Packages (beta) (#676)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-24 09:51:14 -08:00
Chris Tate 26d9769335 ai sdk parity for DurableAgent (#668)
### Key Changes

**Generation Settings**
- Support for `temperature`, `maxOutputTokens`, `topP`, `topK`, `presencePenalty`, `frequencyPenalty`, `stopSequences`, `seed` at constructor and per-stream level

**Step Control**
- Added `maxSteps` to limit LLM calls (default: unlimited for backwards compatibility)
- Added `toolChoice` (`auto`, `none`, `required`, or specific tool)
- Added `activeTools` to filter available tools per-stream call

**Callbacks**
- `onChunk` - called for each stream chunk
- `onStepFinish` - called after each step completes  
- `onFinish` - called when all steps complete
- `onError` - called on errors
- `onAbort` - called when aborted via `AbortSignal`

**Structured Output**
- Added `experimental_output` with `Output.object({ schema })` for parsing structured responses

**Context & Telemetry**
- Added `experimental_context` to pass data to tool executions
- Added `experimental_telemetry` for observability

**Stream Result**
- `stream()` now returns `{ messages, steps, experimental_output }` instead of just `{ messages }`

**Other**
- `prepareStep` can now override generation settings, toolChoice, and context
- Added `experimental_repairToolCall` for handling malformed tool calls
- Enabled file, source, and tool input streaming chunks
- Exported all new types from `@workflow/ai`
2025-12-24 09:37:02 -08:00
Peter Wielander d9f6a49397 [world-local] Create dataDir on start and add versioning forward-compat (#681) 2025-12-23 20:43:03 +01:00
Peter Wielander 0cf0ac3211 [util] Extract helper function to find local world dataDir across CLI/UI (#682) 2025-12-23 20:42:42 +01:00
JJ Kasper 8ba8b6be6b Revert extra stdlib re-export (#683) 2025-12-23 12:04:47 -06:00
Peter Wielander 25b02b0bfd [runtime] Add CORS headers and request handling to health check check response (#624) 2025-12-23 14:17:17 +01:00
Peter Wielander c059cf6fcd [cli] Only do interactive pagination when using the -i flag (#669) 2025-12-23 14:05:06 +01:00
Peter Wielander 4bc98ff4a1 [web-shared] Move error boundary from web to web-shared and use for sidebar detail view (#674) 2025-12-23 14:02:36 +01:00
JJ Kasper ea3afce222 Add lazy workflow and step discovery in Next.js (#640) 2025-12-22 23:16:17 -06:00
Nathan Rajlich c3464bfd97 Fix race conditions in webhook response handling (#672)
Fixes flaky `webhookWorkflow` e2e test on "local" test suites
2025-12-22 10:41:08 -08:00
Vercel Release Bot 0143da749d Version Packages (beta) (#675) 2025-12-22 16:22:58 +01:00
Peter Wielander 616bc67be4 [web-shared] Fix null access in eventData (#673) 2025-12-22 16:18:17 +01:00
Vercel Release Bot 560dda3014 Version Packages (beta) (#660) 2025-12-20 10:58:29 +01:00
Peter Wielander f2d5997b80 [world-local] Throw an error when trying writing JSON that fails entity validation 2025-12-20 10:44:00 +01:00
Peter Wielander 88ad5c9bbf [web] Fix hook span display if hooks were already disposed (#658) 2025-12-20 09:52:32 +01:00
Peter Wielander ef22f82c9e [web] Allow resuming hooks with payloads from the UI (#656) 2025-12-20 09:27:01 +01:00
Vercel Release Bot bd3385ff6d Version Packages (beta) (#652)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-12-19 15:41:36 -08:00
Nathan Rajlich 75a5060473 Handle Vercel Queue 24 hour message TTL by re-enqueueing message (#651) 2025-12-19 15:30:51 -08:00
Nathan Rajlich eaf9aa65f3 Don't shadow globalThis (#649) 2025-12-18 15:37:52 -08:00
Nathan Rajlich 6cd1a47b31 Additional error debugging when failing to validate server response (#647) 2025-12-18 15:17:33 -08:00
Adrian f39683370d fix: include next config in web package (#646)
* fix: include next config in web package

* changeset
2025-12-18 15:10:45 -08:00
Vercel Release Bot b4132d0895 Version Packages (beta) (#635) 2025-12-18 20:07:06 +01:00
Pranay Prakash ea2a67e19c perf: parallelize suspension handler for high-concurrency (#544)
The current implementation of suspension handler processes the invocation queue sequentially which is really slow. Now we process is in parallel:

- Process hooks first, then steps and waits in parallel to prevent race conditions
- Refactor runtime.ts into modular files: `suspension-handler.ts`, `step-handler.ts`, `helpers.ts`
- nit: Add otel attributes for hooks created (`workflow.hooks.created`) and waits created (`workflow.waits.created`)
- nit: Update suspension status from `pending_steps` to `workflow_suspended`
2025-12-17 18:43:09 -08:00
Adrian ab55ba2d61 fix: disable RSC dedupe request through world-vercel (#639)
* fix: add request header for world-vercel

* changeset
2025-12-17 15:43:10 -08:00
Peter Wielander 712f6f86b1 [worlds] [runtime] Change serialized stream ID gen from v4 UUIDs to ULIDs and fix stream list endpoint (#625) 2025-12-17 20:44:34 +01:00
Peter Wielander 4bdd3e5086 Move auth error messages into @workflow/errors package (#638) 2025-12-17 16:54:29 +01:00
Peter Wielander c6f33ee9d3 [web] Show event markers for step_started events (#636) 2025-12-17 10:35:09 +01:00
Nathan Rajlich c4402a12cc Reduce flaky idempotency test timeout on Windows (#581)
The `idempotency` test was running **110 concurrent steps** (10 + 100), with each step requiring multiple filesystem operations in the local world:

1. **Step creation** - writes step JSON file
2. **Step update** - reads and overwrites step JSON file
3. **Event creation** - writes event JSON file

That's ~3-4 file operations per step × 110 steps = **330-440 total file operations**.

On Windows, this is especially slow because:
- **NTFS** is slower than ext4/APFS for small file writes
- **Windows Defender** real-time scanning adds latency to new file creation
- The **atomic write pattern** (write temp file → rename) is slower on Windows

Reduced the number of steps from **110 to 20** (5 + 15 instead of 10 + 100):

**`workflows/noop.ts`**:
- First batch: 10 → 5 steps
- Second batch: 100 → 15 steps

**`src/idempotency.mts`**:
- Updated assertion to expect 20 numbers instead of 110

This is ~5.5x fewer file operations while still testing the same concurrent step execution and idempotency behavior. The test should now complete well within the 60-second timeout even on slow Windows CI machines.
2025-12-17 00:03:56 -08:00
Peter Wielander ce7d428a07 [world-local] Fix step queries not returning new items for live pagination (#623) 2025-12-17 08:58:42 +01:00
Peter Wielander a84f0db227 [web] Visually distinguish createdAt vs startedAt for run/steps (#622) 2025-12-17 08:58:18 +01:00
Vercel Release Bot fc6a32d6dc Version Packages (beta) (#607) 2025-12-16 21:05:18 +01:00
Adrian 29967bff90 fix: nitro duplicate building workflows on startup (#619) 2025-12-16 12:04:05 -08:00
Peter Wielander deaf0193e9 [world-vercel] Allow skipping vercel backend proxy for e2e tests where CLI runs in runtime env (#627) 2025-12-16 20:44:05 +01:00
Adrian 1ef6b2fdc8 fix: use workflow health endpoint to check for port (#616)
* chore: use workflow health endpoint to check for port

* chore: update comment

* changeset

* Fix: The JSDoc comment for the `probePort` function is outdated and doesn't match the implementation. It claims the function returns true for "non-404 response" but the code now checks for exactly 200 status.

This commit fixes the issue reported at packages/utils/src/get-port.ts:251

## Outdated JSDoc comment in probePort() function doesn't match implementation

**What fails:** The JSDoc comment at line 251 of `packages/utils/src/get-port.ts` claims the `probePort()` function `@returns true if the port responds as a workflow server (non-404 response)`, but the actual implementation at line 269 explicitly checks `return response.status === 200;`

**How to reproduce:**
1. Read the JSDoc comment for `probePort()` function in `packages/utils/src/get-port.ts` (line 251)
2. Read the implementation at lines 268-269
3. Observe the mismatch: the comment says "non-404 response" but code checks for exactly status 200

**What happened vs expected behavior:**
- The code behavior was changed in commit `34cb235` (Dec 15, 2025) from checking `response.status !== 404` to checking `response.status === 200`
- The internal code comments were updated in commit `5840ab2`, but the JSDoc was left outdated
- Developers reading the JSDoc would incorrectly believe the function accepts any non-404 response (400, 405, etc.) when it actually requires exactly 200

**Fix:** Updated the JSDoc `@returns` line to accurately reflect the implementation: `@returns true if the port responds with a 200 status from the health check endpoint`

**Verification:** All 19 tests in `packages/utils/src/get-port.test.ts` pass with the updated documentation.

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>

---------

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
2025-12-15 16:34:44 -08:00
Nathan Rajlich 4d7a393906 Add workflow endpoints health check query parameter (#613)
* Add workflow endpoints health check query parameter

* .

* .

* Add e2e
2025-12-15 15:14:29 -08:00
Peter Wielander 05ea6789e5 [web] Add actions for waking up workflow from sleep and re-enqueue runs for debugging (#582) 2025-12-14 17:39:25 -08:00
Copilot b56aae3fe9 Override timeout functions in workflow VM context to throw helpful errors (#505)
* Initial plan

* Override timeout functions in workflow VM context to throw helpful errors

Co-authored-by: TooTallNate <71256+TooTallNate@users.noreply.github.com>

* Use WorkflowRuntimeError instead of vmGlobalThis.Error for timeout functions

Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>

* Add docs page for timeout-in-workflow error

Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>

* Reorder unavailable functions list: set* functions first, then clear* functions

Co-authored-by: TooTallNate <71256+TooTallNate@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: TooTallNate <71256+TooTallNate@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
2025-12-13 01:47:03 -08:00
Daniel Erickson 795c0f38e7 Update README.md (#601) 2025-12-12 23:44:26 -08:00