') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); feat(api): export getWorld and healthCheck from workflow/api by devyanshyadav · Pull Request #803 · vercel/workflow · GitHub
Skip to content

feat(api): export getWorld and healthCheck from workflow/api - #803

Closed
devyanshyadav wants to merge 2 commits into
vercel:mainfrom
devyanshyadav:main
Closed

feat(api): export getWorld and healthCheck from workflow/api#803
devyanshyadav wants to merge 2 commits into
vercel:mainfrom
devyanshyadav:main

Conversation

@devyanshyadav

Copy link
Copy Markdown

Description

This PR resolves an inconsistency where the documented method for managing workflows (import { getWorld } from "workflow/api") was missing from the SDK's public exports, causing Module '"workflow/api"' has no exported member 'getWorld'.ts(2305) errors.

Key Changes

  • SDK: Exported getWorld, healthCheck, and the World type from workflow/api and workflow/api-workflow.
  • Documentation: Updated the getWorld API reference and the Postgres World deployment guides to use the correct unified import.
  • Example Migration: Updated all workbench/ projects to follow the new standard, ensuring a consistent developer experience across the repository.
  • Versioning: Included a changeset to trigger the appropriate package updates.

Verification

  • Verified that getWorld and the World type are correctly resolvable and typed via the workflow/api entry point.
  • Audited all workspace documentation to ensure synchronization with the code changes.

@changeset-bot

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: c3c9619

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 13 packages
NameType
workflowPatch
@workflow/corePatch
@workflow/aiPatch
@workflow/docs-typecheckPatch
@workflow/world-testingPatch
@workflow/buildersPatch
@workflow/cliPatch
@workflow/nextPatch
@workflow/nitroPatch
@workflow/web-sharedPatch
@workflow/astroPatch
@workflow/sveltekitPatch
@workflow/nuxtPatch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercelBot commented Jan 18, 2026

Copy link
Copy Markdown
Contributor

@devyanshyadav is attempting to deploy a commit to the Vercel Labs Team on Vercel.

A member of the Team first needs to authorize it.

export {
type Event,
getHookByToken,
getWorld,

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.

Missing exports for stepEntrypoint and workflowEntrypoint in workflow/api.ts causes build failures when base-builder.ts tries to import them

Fix on Vercel

TooTallNate added a commit that referenced this pull request Jan 21, 2026
@pranaygp

Copy link
Copy Markdown
Contributor

We actually need to fix up the examples and export some higher level "API" functions from 'workflow/api'

for now gonna fix the docs in #826 and then add some higher level exports to api

ideally you should seldom have to use getWorld unless you need explicit access to the world ( #621 will make things clearer)

Sign up for freeto 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

@devyanshyadav@pranaygp