Skip to content

ci(changesets): version packages#1101

Merged
omeraplak merged 1 commit into
mainfrom
changeset-release/main
Feb 23, 2026
Merged

ci(changesets): version packages#1101
omeraplak merged 1 commit into
mainfrom
changeset-release/main

Conversation

@voltagent-bot

@voltagent-bot voltagent-bot commented Feb 22, 2026

Copy link
Copy Markdown
Member

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@voltagent/core@2.6.0

Minor Changes

  • #1100 314ed40 Thanks @omeraplak! - feat: add workflow observer/watch APIs for stream results

    What's New

    • Added run-level observer APIs on WorkflowStreamResult:
      • watch(cb)
      • watchAsync(cb)
      • observeStream()
      • streamLegacy()
    • These APIs are now available on:
      • workflow.stream(...)
      • workflow.timeTravelStream(...)
      • resumed stream results returned from .resume(...)
    • Added test coverage for event ordering, unsubscribe behavior, multiple watchers, callback isolation, and observeStream() close semantics.

    SDK Example

    const stream = workflow.stream({ value: 3 });
    
    const unwatch = stream.watch((event) => {
      console.log("[watch]", event.type, event.from);
    });
    
    const unwatchAsync = await stream.watchAsync(async (event) => {
      if (event.type === "workflow-error") {
        await notifyOps(event);
      }
    });
    
    const reader = stream.observeStream().getReader();
    const observerTask = (async () => {
      while (true) {
        const { done, value } = await reader.read();
        if (done) break;
        console.log("[observeStream]", value.type);
      }
    })();
    
    for await (const event of stream) {
      console.log("[main iterator]", event.type);
    }
    
    unwatch();
    unwatchAsync();
    await observerTask;
    
    const state = await stream.streamLegacy().getWorkflowState();
    console.log("final status:", state?.status);

    Time Travel Stream Example

    const replayStream = workflow.timeTravelStream({
      executionId: sourceExecutionId,
      stepId: "step-approval",
    });
    
    const stopReplayWatch = replayStream.watch((event) => {
      console.log("[replay]", event.type, event.from);
    });
    
    for await (const event of replayStream) {
      console.log("[replay iterator]", event.type);
    }
    
    stopReplayWatch();
  • #1102 7f923d2 Thanks @omeraplak! - feat: add workflow execution primitives (bail, abort, getStepResult, getInitData)

    What's New

    Step execution context now includes four new primitives:

    • bail(result?): complete the workflow early with a custom final result
    • abort(): cancel the workflow immediately
    • getStepResult(stepId): get a prior step output directly (returns null if not available)
    • getInitData(): get the original workflow input (stable across resume paths)

    These primitives are available in all step contexts, including nested step flows.

    Example: Early Complete with bail

    const workflow = createWorkflowChain({
      id: "bail-demo",
      input: z.object({ amount: z.number() }),
      result: z.object({ status: z.string() }),
    })
      .andThen({
        id: "risk-check",
        execute: async ({ data, bail }) => {
          if (data.amount > 10_000) {
            bail({ status: "rejected" });
          }
          return { status: "approved" };
        },
      })
      .andThen({
        id: "never-runs-on-bail",
        execute: async () => ({ status: "approved" }),
      });

    Example: Cancel with abort

    const workflow = createWorkflowChain({
      id: "abort-demo",
      input: z.object({ requestId: z.string() }),
      result: z.object({ done: z.boolean() }),
    })
      .andThen({
        id: "authorization",
        execute: async ({ abort }) => {
          abort(); // terminal status: cancelled
        },
      })
      .andThen({
        id: "never-runs-on-abort",
        execute: async () => ({ done: true }),
      });

    Example: Use getStepResult + getInitData

    const workflow = createWorkflowChain({
      id: "introspection-demo",
      input: z.object({ userId: z.string(), value: z.number() }),
      result: z.object({ total: z.number(), userId: z.string() }),
    })
      .andThen({
        id: "step-1",
        execute: async ({ data }) => ({ partial: data.value + 1 }),
      })
      .andThen({
        id: "step-2",
        execute: async ({ getStepResult, getInitData }) => {
          const s1 = getStepResult<{ partial: number }>("step-1");
          const init = getInitData();
    
          return {
            total: (s1?.partial ?? 0) + init.value,
            userId: init.userId,
          };
        },
      });

Summary by CodeRabbit

Release Notes

  • New Features

    • Added workflow observer/watch APIs for stream results, enabling real-time monitoring of streaming operations
    • Introduced new workflow primitives for enhanced control flow management
  • Chores

    • Updated core package to version 2.6.0
    • Updated all example projects to use the latest package version

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Feb 22, 2026

Copy link
Copy Markdown

Deploying voltagent with  Cloudflare Pages  Cloudflare Pages

Latest commit: 08ca546
Status: ✅  Deploy successful!
Preview URL: https://fdeefb5d.voltagent.pages.dev
Branch Preview URL: https://changeset-release-main.voltagent.pages.dev

View logs

@ghost

This comment has been minimized.

@coderabbitai

coderabbitai Bot commented Feb 22, 2026

Copy link
Copy Markdown
Contributor
📝 Walkthrough

Walkthrough

Removed a changeset file, bumped packages/core to 2.6.0 and added its changelog entries, and updated @voltagent/core dependency from ^2.5.0 to ^2.6.0 across example project package.json files.

Changes

Cohort / File(s) Summary
Changeset Removal
.changeset/blue-bags-remember.md
Deleted a changeset that documented workflow stream observer/watch APIs.
Core release metadata
packages/core/package.json, packages/core/CHANGELOG.md
Bumped package version to 2.6.0 and added changelog entries describing new workflow APIs and examples.
Example manifests (dependency bumps)
examples/*/package.json
Updated @voltagent/core constraint from ^2.5.0^2.6.0 across all example project package.json files (multiple entries).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

Poem

🐰 A little hop from five to six,
Changelogs stitched and examples fixed.
The changeset folded, the release set free,
Streams and watchful eyes now flee (or see)! 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'ci(changesets): version packages' accurately describes the main change—a version bump via the Changesets release action, which is the primary purpose of this automated PR.
Description check ✅ Passed The PR description is comprehensive and follows the Changesets action format, documenting the release of @voltagent/core@2.6.0 with detailed feature descriptions, code examples, and use cases, though it does not follow the provided template structure.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch changeset-release/main

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
examples/with-nextjs-resumable-stream/package.json (1)

60-64: ⚠️ Potential issue | 🟡 Minor

Pre-existing repository.directory mismatch.

The directory field points to examples/with-nextjs-ai-elements, but this package lives under examples/with-nextjs-resumable-stream. This can mislead tooling that uses the field (e.g., npm provenance, monorepo link generators).

🔧 Proposed fix
-    "directory": "examples/with-nextjs-ai-elements"
+    "directory": "examples/with-nextjs-resumable-stream"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@examples/with-nextjs-resumable-stream/package.json` around lines 60 - 64, The
repository.directory field in package.json currently points to
"examples/with-nextjs-ai-elements" but this package is under
"examples/with-nextjs-resumable-stream"; update the "repository.directory" value
to "examples/with-nextjs-resumable-stream" so the repository metadata matches
the package location and tooling can resolve provenance correctly (edit the
"repository.directory" property in package.json).
🧹 Nitpick comments (1)
examples/with-zapier-mcp/package.json (1)

7-7: Consider aligning the version range operator with the rest of the monorepo.

This example uses ~2.6.0 (patch-level range) while all other examples use ^2.6.0 (minor-level range). This is a pre-existing inconsistency, but since the line is already being touched, it's a good opportunity to align it.

♻️ Proposed fix
-    "@voltagent/core": "~2.6.0",
+    "@voltagent/core": "^2.6.0",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@examples/with-zapier-mcp/package.json` at line 7, Update the dependency
version operator for "@voltagent/core" in the package.json so it matches the
monorepo convention: replace the patch-range operator "~2.6.0" with the caret
minor-range operator "^2.6.0" (i.e., change the value for the "@voltagent/core"
entry).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@examples/with-nextjs-resumable-stream/package.json`:
- Around line 60-64: The repository.directory field in package.json currently
points to "examples/with-nextjs-ai-elements" but this package is under
"examples/with-nextjs-resumable-stream"; update the "repository.directory" value
to "examples/with-nextjs-resumable-stream" so the repository metadata matches
the package location and tooling can resolve provenance correctly (edit the
"repository.directory" property in package.json).

---

Nitpick comments:
In `@examples/with-zapier-mcp/package.json`:
- Line 7: Update the dependency version operator for "@voltagent/core" in the
package.json so it matches the monorepo convention: replace the patch-range
operator "~2.6.0" with the caret minor-range operator "^2.6.0" (i.e., change the
value for the "@voltagent/core" entry).

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 82 files

Note: This PR contains a large number of files. cubic only reviews up to 75 files per PR, so some files may not have been reviewed.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/core/CHANGELOG.md`:
- Around line 78-88: The duplicate "### What's New" heading in the CHANGELOG
entry should be renamed to avoid markdownlint MD024; locate the second heading
that precedes the list of new step context primitives (the block describing
bail(result?), abort(), getStepResult(stepId), getInitData()) and change the
heading text to something unique like "### New Primitives" or "### Execution
Primitives" so the markdown heading is no longer duplicated.

Comment on lines +78 to +88
### What's New

Step execution context now includes four new primitives:
- `bail(result?)`: complete the workflow early with a custom final result
- `abort()`: cancel the workflow immediately
- `getStepResult(stepId)`: get a prior step output directly (returns `null` if not available)
- `getInitData()`: get the original workflow input (stable across resume paths)

These primitives are available in all step contexts, including nested step flows.

### Example: Early Complete with `bail`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Avoid duplicate “What’s New” heading to satisfy markdownlint (MD024).

Another “### What’s New” appears earlier in this release entry; markdownlint flags duplicate headings. Consider renaming this one (e.g., “### New Primitives” or “### Execution Primitives”).

🧰 Tools
🪛 markdownlint-cli2 (0.21.0)

[warning] 78-78: Multiple headings with the same content

(MD024, no-duplicate-heading)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/core/CHANGELOG.md` around lines 78 - 88, The duplicate "### What's
New" heading in the CHANGELOG entry should be renamed to avoid markdownlint
MD024; locate the second heading that precedes the list of new step context
primitives (the block describing bail(result?), abort(), getStepResult(stepId),
getInitData()) and change the heading text to something unique like "### New
Primitives" or "### Execution Primitives" so the markdown heading is no longer
duplicated.

@omeraplak
omeraplak merged commit 82074b9 into main Feb 23, 2026
22 checks passed
@omeraplak
omeraplak deleted the changeset-release/main branch February 23, 2026 02:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants