Skip to content

Extract workflow runner to ../relayflows; split cloud + relayfile concerns#1000

Merged
willwashburn merged 9 commits into
mainfrom
chore/extract-workflows-to-relayflows
May 26, 2026
Merged

Extract workflow runner to ../relayflows; split cloud + relayfile concerns#1000
willwashburn merged 9 commits into
mainfrom
chore/extract-workflows-to-relayflows

Conversation

@willwashburn
Copy link
Copy Markdown
Member

Summary

Major architectural cleanup. Splits Agent Relay's monorepo into a one-way dependency graph and moves the workflow runner into a dedicated sibling repo (AgentWorkforce/relayflows).

End state — each package has one concern:

@agent-relay/sdk      ── broker, PTY, protocol
@agent-relay/cloud    ── identity, permissions, tokens, JWKS, audit
                         (was @agent-relay/sdk/provisioner +
                          briefly @agent-relay/cloud-sdk)
@relayfile/sdk@0.8.0  ── workspace seeding + relayfile-mount lifecycle
                         (moved out of agent-relay)
@relayflows/core      ── workflow runner (sibling repo)
@relayflows/cli       ── workflow CLI (sibling repo)

No more circular deps. The arrow points one way: relayflows → agent-relay.

What's removed

  • packages/workflow-types/ — shim package deleted; types are in @relayflows/core/schema
  • packages/sdk/src/workflows/ — workflow runner moved to @relayflows/core
  • packages/sdk/src/provisioner/ — moved to @agent-relay/cloud (and onward, where relayfile-flavored bits went to @relayfile/sdk@0.8.0)
  • workflow-step.ts files in github/slack/browser primitives — workflow adapters moved to @relayflows/core/integrations/*
  • relay run (workflow runner) and relay workflows (templates) CLI commands — replaced by relayflows run
  • createGitHubStep / createSlackStep re-exports from SDK barrel
  • browser-primitive's MCP browser.step.execute tool (step execution is workflow-side)
  • Workflow-flavored SDK tests (yaml-validation, swarm-coordinator, resume-fallback, idle-nudge, file-db, e2e-owner-review, completion-pipeline, start-from, builder-deterministic, error-scenarios, provisioner-mount, provisioner/audit) — moved to relayflows

Companion PRs / releases (already landed)

  • AgentWorkforce/relayfile#208 → `@relayfile/sdk@0.8.0` (merged + published — contains `workspace-seeder` + `workspace-mount`)
  • `@relayflows/core@0.0.1` + `@relayflows/cli@0.0.1` (placeholder publishes on npm to reserve the namespace; real 0.1.0 ships from the relayflows repo's publish workflow after this PR lands)

After this merges

  1. Cut a new `@agent-relay/cloud@7.2.0` (now includes permissions/tokens/JWKS/audit/compiler)
  2. Cut a new `@agent-relay/sdk@7.2.0` (slimmer; no workflow knowledge)
  3. Dispatch the relayflows publish workflow for `@relayflows/core@0.1.0` + `@relayflows/cli@0.1.0`

Test plan

  • `npm run typecheck` passes (workspace-wide)
  • No `@agent-relay/sdk/provisioner/*`, `@agent-relay/sdk/workflows`, `@agent-relay/workflow-types`, or `@agent-relay/cloud-sdk` references remain in code
  • CI suite passes
  • Manual smoke: `relay init` still works without workflow deps
  • Manual smoke: `relay on start` / `relay on provision` still work against a relayfile workspace

🤖 Generated with Claude Code

Workflows have moved to ../relayflows. This change removes the workflow
runner, types, YAML definitions, examples, docs, and broker-side workflow
tests from this repo. Existing imports keep working through compat shims:

- packages/sdk/src/workflows/index.ts now re-exports from @relayflows/core
- @agent-relay/workflow-types becomes a thin re-export of @relayflows/core/schema
- @agent-relay/sdk gains a @relayflows/core dependency
- @agent-relay/sdk gets ./provisioner and ./provisioner/mount subpath
  exports so relayflows can consume them without reaching into internals
- CLI's resolveTemplatesDir now reads from @relayflows/core's package

github-primitive and slack-primitive workflow-step adapters stay in
this repo; they continue importing @agent-relay/workflow-types (which
is now a shim that re-exports from @relayflows/core).

Note: @relayflows/core is not yet published. Local development needs
npm link against ../relayflows/packages/core, or a publish, before
typecheck/install will resolve.
Three changes that move workflow-aware code out of @agent-relay/sdk and
into @relayflows/core:

1. Extract general permission + CLI primitives into a new
   `packages/sdk/src/permissions.ts` module. Previously these types
   (AgentCli, AgentPermissions, AgentPreset, AccessPreset,
   FilePermissions, NetworkPermission, PermissionProfileDefinition,
   CompiledAgentPermissions, PermissionSource) lived in
   `workflows/types.ts`, even though the provisioner, cli-resolver,
   and cli-registry needed them. They are not workflow-specific —
   they describe agent identity and access. Exposed via
   `@agent-relay/sdk/permissions` and re-exported from the barrel.

2. Move `provisionWorkflowAgents` (and its WorkflowProvisionConfig,
   ProvisionResult, AgentProvisionMap types) out of the SDK
   provisioner. It composes SDK primitives (compileAgentScopes,
   mintAgentToken, seedWorkspace, ensureRelayfileMount, audit) into
   the workflow-shaped orchestration that the runner needs — it
   belongs in relayflows. The SDK keeps the generic primitives.

3. Move workflow-flavored SDK tests (yaml-validation, swarm-coordinator,
   resume-fallback, idle-nudge, file-db, e2e-owner-review,
   completion-pipeline, start-from, builder-deterministic,
   error-scenarios, provisioner/audit) into @relayflows/core. They test
   workflow behavior; the SDK has no workflow surface.

Subpath exports cleanup:
- Add `./permissions` subpath
- Drop the `./provisioner` (barrel) and `./provisioner/mount`
  subpaths I added earlier as workarounds; relayflows now consumes
  these primitives from the main `@agent-relay/sdk` entrypoint
  (`./provisioner/seeder`, `./provisioner/local-jwks`, and
  `./provisioner/token` stay because CLI commands use them directly).
Removes all paths that pulled @relayflows/core (or
@agent-relay/workflow-types as a transitive proxy) into relay:

- Delete @agent-relay/workflow-types package (the compat shim)
- Delete @agent-relay/sdk's ./workflows subpath export and the
  packages/sdk/src/workflows/ shim directory
- Drop @relayflows/core from @agent-relay/sdk dependencies
- Delete workflow-step.ts adapters in github/slack/browser
  primitives (moved to @relayflows/core/integrations/*)
- Drop @agent-relay/workflow-types from primitive package.jsons
- Strip createGitHubStep/createSlackStep from SDK barrel and
  drop the corresponding re-exports
- Remove `relay run` (workflow runner) and `relay workflows`
  (templates) CLI commands — replaced by `relayflows run`
- Delete setup.test.ts (covered the deleted CLI surface)
- Drop browser-primitive's MCP `browser.step.execute` /
  `browser_step_execute` tools (step execution is workflow-side)
- Strip path mappings for workflow-types and workflow-step files
  from SDK tsconfigs
- Drop workflow-types build from root typecheck script
- Update docs to reference @relayflows/core for workflow APIs

Dependency direction is now one-way:
  relayflows -> @agent-relay/sdk
  (no arrow back)
Creates a new public workspace package, @agent-relay/cloud-sdk, that
owns the cross-product identity + provisioning concerns previously
embedded in @agent-relay/sdk:

  - Permission types + scope compiler (AgentPermissions, AgentCli,
    compileAgentScopes, resolveAgentPermissions, ...)
  - JWT minting + local JWKS key management (mintAgentToken,
    LocalJwksSigningKey, createLocalJwksKeyPair, importPrivateKeyPem)
  - Relayfile workspace + ACL seeding (seedWorkspace, seedWorkflowAcls,
    createWorkspaceIfNeeded — RelayFileClient wrappers)
  - Relayfile-mount management (ensureRelayfileMount + MountHandle)
  - Permission audit log (PermissionAuditLog,
    getDefaultPermissionAuditPath)

These never belonged in the broker SDK — they're shared across the
agent-relay product family (relayfile, relayauth, relaycast,
relayflows) and any tool that mints scoped tokens or provisions
relayfile workspaces against an Agent Relay account.

After this move:
  @agent-relay/sdk         — broker, PTY, protocol, AgentRelay client
  @agent-relay/cloud-sdk   — cross-product identity + provisioning
  @agent-relay/sdk depends on @agent-relay/cloud-sdk only for the
  AgentCli type (used by cli-resolver and cli-registry).

Consumers updated:
  - relay CLI's `on provision` / `on start` (subpath imports redirected)
  - removed obsolete @agent-relay/sdk/{provisioner,permissions}
    subpath exports and the corresponding workspace path mappings
  - typecheck script builds cloud-sdk between cloud and SDK

provisioner-mount.test.ts (which actually tests provisionWorkflowAgents,
not the SDK) moves into relayflows.
…→ @relayfile/sdk

Consolidates the cross-product identity, permission, and provisioning
layer into the existing @agent-relay/cloud package, and pushes the
relayfile-server primitives (seeder, mount) into @relayfile/sdk where
they belong (open PR: AgentWorkforce/relayfile#208).

Net effect: @agent-relay/cloud-sdk goes away, the package graph
collapses to:

  @agent-relay/sdk   ── broker, PTY, protocol (uses AgentCli from cloud)
  @agent-relay/cloud ── auth, identity, permissions, tokens, JWKS,
                       compiler, audit, workspaces, ssh, proactive
  @relayfile/sdk     ── relayfile client + workspace seeding + mount
                       (pending @relayfile/sdk@0.8.0 release)

Moves into @agent-relay/cloud:
  - permissions.ts (AgentPermissions, AgentCli, AccessPreset, ...)
  - compiler.ts (compileAgentScopes, resolveAgentPermissions, ...)
  - token.ts (mintAgentToken, DEFAULT_ADMIN_SCOPES)
  - local-jwks.ts (createLocalJwksKeyPair, importPrivateKeyPem)
  - audit.ts (PermissionAuditLog, getDefaultPermissionAuditPath)
  - provisioning-types.ts (ProvisionSummary, CompileInput,
    CompiledAgentScopes)

Updates:
  - cloud/index.ts re-exports all of the above
  - cloud/package.json adds ./permissions, ./token, ./local-jwks,
    ./compiler, ./audit subpath exports
  - SDK's cli-resolver/cli-registry import AgentCli from
    @agent-relay/cloud
  - CLI on/provision + on/start + start.test.ts import from
    @agent-relay/cloud
  - workspace path mappings in tsconfigs drop cloud-sdk
  - root typecheck script drops cloud-sdk build step

Drop unused convenience types `SeedAclOptions`, `SeedWorkspaceOptions`,
and `AgentAclSummary` (no consumer ever used them).

The seeder.ts + mount.ts files and their tests are removed from this
repo entirely; they'll come back via @relayfile/sdk@0.8.0 once
relayfile#208 merges.
- packages/cli/src/cli/commands/on/start.ts:24 was importing
  seedWorkspace from @agent-relay/cloud, but seedWorkspace was
  removed from cloud (it lives in @relayfile/sdk/workspace-seeder
  now). The CLI already has a local seedWorkspace in
  ./workspace.js with the same signature; reuse it.

- packages/cloud/src/index.ts didn't re-export createLocalJwks,
  exportPrivateKeyPem, RELAYAUTH_JWKS_URL_ENV, LocalJwks, or
  LocalJwksKeyPair from local-jwks.js. relay's CLI 'on start'
  command needs them.

- packages/sdk/package.json prebuild script still referenced the
  deleted packages/workflow-types directory. Removed.

Workspace-wide typecheck is green.
@willwashburn willwashburn requested a review from khaliqgant as a code owner May 26, 2026 21:27
@gemini-code-assist
Copy link
Copy Markdown

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 26, 2026

Important

Review skipped

Too many files!

This PR contains 248 files, which is 98 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b1a09b54-c6da-4cc4-a08b-33509e0cde9e

📥 Commits

Reviewing files that changed from the base of the PR and between 58df237 and 3f2a3f9.

📒 Files selected for processing (248)
  • .github/workflows/publish.yml
  • .github/workflows/relay-cleanroom-hardening.yml
  • .github/workflows/workflow-reliability.yml
  • .github/workflows/workflow-validation.yml
  • package.json
  • packages/browser-primitive/examples/browser-workflow.ts
  • packages/browser-primitive/package.json
  • packages/browser-primitive/src/index.ts
  • packages/browser-primitive/src/mcp-server.ts
  • packages/browser-primitive/src/workflow-step.ts
  • packages/cli/src/cli/bootstrap.test.ts
  • packages/cli/src/cli/commands/core.ts
  • packages/cli/src/cli/commands/on/provision.ts
  • packages/cli/src/cli/commands/on/start.test.ts
  • packages/cli/src/cli/commands/on/start.ts
  • packages/cli/src/cli/commands/setup.test.ts
  • packages/cli/src/cli/commands/setup.ts
  • packages/cloud/package.json
  • packages/cloud/src/__tests__/compiler.test.ts
  • packages/cloud/src/__tests__/presets.test.ts
  • packages/cloud/src/__tests__/token-factory.test.ts
  • packages/cloud/src/__tests__/token.test.ts
  • packages/cloud/src/audit.ts
  • packages/cloud/src/compiler.ts
  • packages/cloud/src/index.ts
  • packages/cloud/src/local-jwks.ts
  • packages/cloud/src/permissions.ts
  • packages/cloud/src/provisioning-types.ts
  • packages/cloud/src/token.ts
  • packages/credential-proxy/README.md
  • packages/github-primitive/DESIGN.md
  • packages/github-primitive/README.md
  • packages/github-primitive/examples/end-to-end-pr-workflow.ts
  • packages/github-primitive/examples/github-step.ts
  • packages/github-primitive/examples/multi-tenant-pr-workflow.ts
  • packages/github-primitive/package.json
  • packages/github-primitive/src/index.ts
  • packages/github-primitive/src/workflow-step.ts
  • packages/personas/personas/agent-relay-workflow.json
  • packages/personas/personas/opencode-workflow-specialist.json
  • packages/sdk-py/tests/test_workflow_templates.py
  • packages/sdk/README.md
  • packages/sdk/package.json
  • packages/sdk/src/__tests__/builder-deterministic.test.ts
  • packages/sdk/src/__tests__/completion-pipeline.test.ts
  • packages/sdk/src/__tests__/e2e-owner-review.test.ts
  • packages/sdk/src/__tests__/error-scenarios.test.ts
  • packages/sdk/src/__tests__/file-db.test.ts
  • packages/sdk/src/__tests__/idle-nudge.test.ts
  • packages/sdk/src/__tests__/provisioner-mount.test.ts
  • packages/sdk/src/__tests__/resume-fallback.test.ts
  • packages/sdk/src/__tests__/start-from.test.ts
  • packages/sdk/src/__tests__/swarm-coordinator.test.ts
  • packages/sdk/src/__tests__/workflow-runner.test.ts
  • packages/sdk/src/__tests__/workflow-trajectory.test.ts
  • packages/sdk/src/__tests__/yaml-validation.test.ts
  • packages/sdk/src/cli-registry.ts
  • packages/sdk/src/cli-resolver.ts
  • packages/sdk/src/examples/workflow-superiority.ts
  • packages/sdk/src/examples/workflows/README.md
  • packages/sdk/src/examples/workflows/fix-dashboard-user-registration.yaml
  • packages/sdk/src/examples/workflows/ralph-overnight.yaml
  • packages/sdk/src/examples/workflows/ralph-swarm.yaml
  • packages/sdk/src/examples/workflows/ralph-tdd.yaml
  • packages/sdk/src/examples/workflows/runner-idle-refactor.yaml
  • packages/sdk/src/index.ts
  • packages/sdk/src/provisioner/__tests__/audit.test.ts
  • packages/sdk/src/provisioner/__tests__/seeder.test.ts
  • packages/sdk/src/provisioner/__tests__/tar-seeder.test.ts
  • packages/sdk/src/provisioner/index.ts
  • packages/sdk/src/provisioner/mount.ts
  • packages/sdk/src/provisioner/seeder.ts
  • packages/sdk/src/provisioner/types.ts
  • packages/sdk/src/workflows/README.md
  • packages/sdk/src/workflows/__tests__/budget-enforcement.test.ts
  • packages/sdk/src/workflows/__tests__/budget-tracker.test.ts
  • packages/sdk/src/workflows/__tests__/builder-paths.test.ts
  • packages/sdk/src/workflows/__tests__/channel-messenger.test.ts
  • packages/sdk/src/workflows/__tests__/cli-session-collector.test.ts
  • packages/sdk/src/workflows/__tests__/collectors/claude.test.ts
  • packages/sdk/src/workflows/__tests__/collectors/codex.test.ts
  • packages/sdk/src/workflows/__tests__/collectors/opencode.test.ts
  • packages/sdk/src/workflows/__tests__/e2big-and-verify.test.ts
  • packages/sdk/src/workflows/__tests__/e2e-permissions.test.ts
  • packages/sdk/src/workflows/__tests__/fixtures/.agentignore
  • packages/sdk/src/workflows/__tests__/fixtures/.reader.agentreadonly
  • packages/sdk/src/workflows/__tests__/fixtures/permission-test.yaml
  • packages/sdk/src/workflows/__tests__/permission-types.test.ts
  • packages/sdk/src/workflows/__tests__/permissions-integration.test.ts
  • packages/sdk/src/workflows/__tests__/process-backend-executor.test.ts
  • packages/sdk/src/workflows/__tests__/proxy-env.test.ts
  • packages/sdk/src/workflows/__tests__/run-script.test.ts
  • packages/sdk/src/workflows/__tests__/run-summary-table.test.ts
  • packages/sdk/src/workflows/__tests__/scrub-pty-chrome.test.ts
  • packages/sdk/src/workflows/__tests__/sibling-links.test.ts
  • packages/sdk/src/workflows/__tests__/step-cwd.test.ts
  • packages/sdk/src/workflows/__tests__/step-executor.test.ts
  • packages/sdk/src/workflows/__tests__/template-resolver.test.ts
  • packages/sdk/src/workflows/__tests__/verification-custom.test.ts
  • packages/sdk/src/workflows/__tests__/verification-traceback.test.ts
  • packages/sdk/src/workflows/__tests__/verification.test.ts
  • packages/sdk/src/workflows/__tests__/workflow-reliability-contract.test.ts
  • packages/sdk/src/workflows/__tests__/workflow-reliability-e2e.test.ts
  • packages/sdk/src/workflows/api-executor.ts
  • packages/sdk/src/workflows/barrier.ts
  • packages/sdk/src/workflows/budget-tracker.ts
  • packages/sdk/src/workflows/builder.ts
  • packages/sdk/src/workflows/builtin-templates/bug-fix.yaml
  • packages/sdk/src/workflows/builtin-templates/code-review.yaml
  • packages/sdk/src/workflows/builtin-templates/competitive.yaml
  • packages/sdk/src/workflows/builtin-templates/documentation.yaml
  • packages/sdk/src/workflows/builtin-templates/feature-dev.yaml
  • packages/sdk/src/workflows/builtin-templates/refactor.yaml
  • packages/sdk/src/workflows/builtin-templates/review-loop.yaml
  • packages/sdk/src/workflows/builtin-templates/security-audit.yaml
  • packages/sdk/src/workflows/channel-messenger.ts
  • packages/sdk/src/workflows/cli-session-collector.ts
  • packages/sdk/src/workflows/cli.ts
  • packages/sdk/src/workflows/cloud-runner.ts
  • packages/sdk/src/workflows/cloud-schedules.ts
  • packages/sdk/src/workflows/collectors/claude.ts
  • packages/sdk/src/workflows/collectors/codex.ts
  • packages/sdk/src/workflows/collectors/opencode.ts
  • packages/sdk/src/workflows/coordinator.ts
  • packages/sdk/src/workflows/custom-steps.ts
  • packages/sdk/src/workflows/default-logger.ts
  • packages/sdk/src/workflows/dry-run-format.ts
  • packages/sdk/src/workflows/file-db.ts
  • packages/sdk/src/workflows/index.ts
  • packages/sdk/src/workflows/listr-renderer.ts
  • packages/sdk/src/workflows/memory-db.ts
  • packages/sdk/src/workflows/process-backend-executor.ts
  • packages/sdk/src/workflows/process-spawner.ts
  • packages/sdk/src/workflows/proxy-env.ts
  • packages/sdk/src/workflows/run-script.ts
  • packages/sdk/src/workflows/run-summary-table.ts
  • packages/sdk/src/workflows/run.ts
  • packages/sdk/src/workflows/runner.ts
  • packages/sdk/src/workflows/schema.json
  • packages/sdk/src/workflows/sibling-links.ts
  • packages/sdk/src/workflows/state.ts
  • packages/sdk/src/workflows/step-executor.ts
  • packages/sdk/src/workflows/template-resolver.ts
  • packages/sdk/src/workflows/templates.ts
  • packages/sdk/src/workflows/trajectory.ts
  • packages/sdk/src/workflows/types.ts
  • packages/sdk/src/workflows/validator.ts
  • packages/sdk/src/workflows/verification.ts
  • packages/sdk/tsconfig.build.json
  • packages/sdk/tsconfig.json
  • packages/sdk/vitest.config.ts
  • packages/slack-primitive/examples/notify-on-pr.ts
  • packages/slack-primitive/package.json
  • packages/slack-primitive/src/__tests__/post-message.test.ts
  • packages/slack-primitive/src/__tests__/workflow-step.test.ts
  • packages/slack-primitive/src/index.ts
  • packages/slack-primitive/src/workflow-step.ts
  • packages/workflow-types/package.json
  • packages/workflow-types/src/index.ts
  • packages/workflow-types/tsconfig.json
  • scripts/run-relay-cleanroom-ci.sh
  • tests/integration/broker/events-relaycast.test.ts
  • tests/integration/broker/output-chaining.test.ts
  • tests/integration/broker/swarm-dag.test.ts
  • tests/integration/broker/swarm-errors.test.ts
  • tests/integration/broker/trajectory-quality.test.ts
  • tests/integration/broker/trajectory.test.ts
  • tests/integration/broker/utils/workflow-assert-helpers.ts
  • tests/integration/broker/utils/workflow-harness.ts
  • tests/integration/broker/utils/workflow-runner-harness.ts
  • tests/integration/broker/workflow-agents.test.ts
  • tests/integration/broker/workflow-ci.test.ts
  • tests/integration/broker/workflow-dag.test.ts
  • tests/integration/broker/workflow-lifecycle.test.ts
  • tests/integration/broker/workflow-models.test.ts
  • tests/integration/broker/workflow-noninteractive.test.ts
  • tests/integration/broker/workflow-patterns.test.ts
  • tests/integration/broker/workflow-relay-tools.test.ts
  • tests/integration/broker/workflow-runner.test.ts
  • tests/integration/broker/workflow-templates.test.ts
  • tests/integration/broker/workflow-verification.test.ts
  • tests/workflows/README.md
  • tests/workflows/codex-exit/relay.codex-exit-v1-prompt.yaml
  • tests/workflows/codex-exit/relay.codex-exit-v2-lead-relay.yaml
  • tests/workflows/codex-exit/relay.codex-exit-v3-file-sentinel.yaml
  • tests/workflows/codex-exit/relay.codex-exit-v4-noninteractive.yaml
  • tests/workflows/codex-exit/relay.codex-exit-v5-self-release.yaml
  • tests/workflows/codex-lead/relay.codex-lead-v1-basic-coord.yaml
  • tests/workflows/codex-lead/relay.codex-lead-v2-step-chaining.yaml
  • tests/workflows/codex-lead/relay.codex-lead-v3-multi-worker.yaml
  • tests/workflows/codex-lead/relay.codex-lead-v4-noninteractive-workers.yaml
  • tests/workflows/codex-lead/relay.codex-lead-v5-dm-worker.yaml
  • tests/workflows/e2e-owner-review.yaml
  • tests/workflows/real-multi-agent-owner-review.yaml
  • tests/workflows/real-owner-review-test.yaml
  • tests/workflows/real-path-workdir-test.yaml
  • tests/workflows/real-supervisor-test.yaml
  • tests/workflows/run-e2e-owner-review.ts
  • tests/workflows/test-codex-failure.yaml
  • tests/workflows/test-codex-lead-worker.yaml
  • tests/workflows/test-codex-map-reduce.yaml
  • tests/workflows/test-codex-parallel.yaml
  • tests/workflows/test-codex-sequential.yaml
  • tests/workflows/test-codex-simple.yaml
  • tests/workflows/test-codex-supervisor.yaml
  • tests/workflows/test-deterministic-pipeline.yaml
  • tests/workflows/test-gemini-failure.yaml
  • tests/workflows/test-gemini-lead-worker.yaml
  • tests/workflows/test-gemini-map-reduce.yaml
  • tests/workflows/test-gemini-parallel.yaml
  • tests/workflows/test-gemini-sequential.yaml
  • tests/workflows/test-gemini-simple.yaml
  • tests/workflows/test-gemini-supervisor.yaml
  • tests/workflows/test-lead-worker-pattern.yaml
  • tests/workflows/test-non-interactive-bounded.yaml
  • tests/workflows/test-step-sizing.yaml
  • tests/workflows/test-trajectory-quality.yaml
  • tests/workflows/validation-interactive-codex-lead-worker.yaml
  • tests/workflows/validation-lead-worker-happy-strict.yaml
  • tests/workflows/validation-legacy-marker.yaml
  • tests/workflows/validation-map-reduce.yaml
  • tests/workflows/validation-owner-retry-strict.yaml
  • tests/workflows/validation-supervisor.yaml
  • tests/workflows/validation-wrong-sender-lead-posts-worker-done.yaml
  • vitest.config.ts
  • web/components/SiteFooter.tsx
  • web/components/docs/DocsNav.tsx
  • web/content/docs/cli-cloud-commands.mdx
  • web/content/docs/cli-workflows.mdx
  • web/content/docs/cloud.mdx
  • web/content/docs/communicate-ai-sdk.mdx
  • web/content/docs/file-sharing.mdx
  • web/content/docs/plugin-claude-code.mdx
  • web/content/docs/reference-openclaw.mdx
  • web/content/docs/reference-workflows.mdx
  • web/content/docs/scheduling.mdx
  • web/content/docs/swift-sdk.mdx
  • web/content/docs/typescript-examples.mdx
  • web/content/docs/workforce.mdx
  • web/lib/docs-nav.ts
  • workflows/ci/fix-mcp-spawn.yaml
  • workflows/relay-clean-room-e2e-validation.ts
  • workflows/relayauth-integration/examples/docs-writer.yaml
  • workflows/relayauth-integration/examples/full-team.yaml
  • workflows/relayauth-integration/examples/power-user.yaml
  • workflows/relayauth-integration/examples/review-readonly.yaml
  • workflows/relayauth-integration/examples/security-audit.yaml
  • workflows/relayauth-integration/examples/test-scoped.yaml

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/extract-workflows-to-relayflows

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.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4ec5e7be20

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@@ -1,615 +0,0 @@
import type { RunnerStepExecutor, WorkflowStep } from '@agent-relay/workflow-types';
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Remove broken github workflow-step subpath export

Deleting this module without updating packages/github-primitive/package.json leaves exports['./workflow-step'] pointing at dist/workflow-step.js, which will no longer be built or published. Any consumer importing @agent-relay/github-primitive/workflow-step will now fail at runtime with module resolution errors instead of a cleanly removed API surface.

Useful? React with 👍 / 👎.

@@ -1,469 +0,0 @@
import type { RunnerStepExecutor, WorkflowStep } from '@agent-relay/workflow-types';
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Remove broken slack workflow-step subpath export

This file is removed, but packages/slack-primitive/package.json still exports ./workflow-step, so published package metadata now references a non-existent build artifact. In addition, existing tests in packages/slack-primitive/src/__tests__ still import ../workflow-step.js, so slack-primitive test runs will fail once dependencies are available.

Useful? React with 👍 / 👎.

@@ -1,602 +0,0 @@
import type { RunnerStepExecutor, WorkflowStep } from '@agent-relay/sdk/workflows';
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Remove broken browser workflow-step subpath export

Removing this module without removing the corresponding ./workflow-step entry from packages/browser-primitive/package.json leaves the package exporting a path that no longer exists in dist. Consumers that import @agent-relay/browser-primitive/workflow-step will hit runtime import failures.

Useful? React with 👍 / 👎.

- Remove broken `./workflow-step` exports from browser/github/slack-primitive
  package.json (modules were deleted). Drop matching tests + doc snippets.
- Convert cloud-sdk's node:test files (compiler/token/token-factory) to
  vitest so they actually run under the cloud package's `npm test`.
- Fix start.test.ts mock of @agent-relay/cloud — preserve real exports so
  imports for createLocalJwksKeyPair still resolve.
- Drop bootstrap.test.ts entries for the workflow runner commands
  (`run`, `workflows`) that no longer exist.
- Delete obsolete CI workflows (workflow-reliability, workflow-validation,
  relay-cleanroom-hardening) and the cleanroom shell script — they all
  invoked removed code paths.
- Strip workflow-types from publish.yml, vitest.config alias list, and
  the SDK's removed run-script.test.ts pipeline.
@willwashburn
Copy link
Copy Markdown
Member Author

Pushed cc1d182 addressing CI failures and Codex review:

CI fixes

  • Removed obsolete workflows: workflow-reliability.yml, workflow-validation.yml, relay-cleanroom-hardening.yml + scripts/run-relay-cleanroom-ci.sh. All three invoked code paths that left with the workflow runner (packages/sdk/src/workflows/cli.ts, the agent-relay run command, the contract/e2e tests under src/workflows/__tests__).
  • Converted three cloud-sdk tests (compiler / token / token-factory) from node:test to vitest. They were merged into @agent-relay/cloud whose test runner is vitest, so they were silently failing with "No test suite found".
  • Fixed packages/cli/src/cli/commands/on/start.test.ts mock of @agent-relay/cloud to spread importOriginal() so createLocalJwksKeyPair still resolves.
  • Updated bootstrap.test.ts to drop the run and workflows top-level commands (they moved to relayflows).
  • Cleaned publish.yml, root package.json test script, sdk package.json test script, sdk and root vitest.config.ts to stop referencing the deleted workflow-types package and removed run-script.test.ts.

Codex P1 findings (all addressed)

  • packages/browser-primitive/package.json, packages/github-primitive/package.json, packages/slack-primitive/package.json: removed the stale ./workflow-step subpath export (the file is gone).
  • packages/slack-primitive/src/__tests__/workflow-step.test.ts: deleted (whole test file targeted the removed module).
  • packages/slack-primitive/src/__tests__/post-message.test.ts: dropped the renderSlackTemplates import + the one test that used it.
  • Cleaned the matching ## Workflow Step section out of packages/github-primitive/README.md and the workflow-step.ts # Workflow step executor line out of its DESIGN.md.

Local npm test and npm run typecheck both pass.

`reference-workflows.mdx` and `cli-workflows.mdx` were deleted with the
workflow runner, but the docs nav still listed their slugs in
`getAllDocSlugs()`. Next.js called `generateStaticParams()` for both
and hit ENOENT trying to read the MDX, failing the Preview Web build.

- Remove both slugs from `web/lib/docs-nav.ts` (sidebar groups + ALL_SLUGS).
- Drop the matching icon entries and the now-unused `Workflow` lucide
  import from `DocsNav.tsx`.
- Prune `<Card href="/docs/reference-workflows">` / `cli-workflows`
  blocks and the `[Workflow Reference](...)` bullets from the surviving
  MDX pages that pointed at them.
- Repoint the footer "Advanced" link to `/docs/cloud`, the new first
  page in that nav group.
@github-actions
Copy link
Copy Markdown
Contributor

Preview deployed!

Environment URL
Web https://d17z249br9f45f.cloudfront.net

This preview will be cleaned up when the PR is merged or closed.

@willwashburn
Copy link
Copy Markdown
Member Author

Pushed 3f2a3f9 — fixes the Preview Web (SST) failure.

The Next.js build was iterating getAllDocSlugs() and tried to load web/content/docs/reference-workflows.mdx (removed with the workflow runner). Cleanup:

  • Removed reference-workflows + cli-workflows from sidebar + ALL_SLUGS.
  • Stripped the matching icon entries / unused Workflow lucide import from DocsNav.tsx.
  • Removed the <Card href="/docs/reference-workflows"> / cli-workflows blocks from the surviving MDX pages that pointed at them, plus the two markdown bullets in communicate-ai-sdk.mdx and reference-openclaw.mdx.
  • Repointed the footer "Advanced" link to /docs/cloud.

CI status on latest commit: 46 success, 2 skipped (Swift SDK Tests / Cleanup Preview), 1 neutral (cubic). Zero failures. PR shows MERGEABLE (mergeStateStatus BLOCKED is the branch-protection approval gate, not CI).

@willwashburn willwashburn merged commit 6a456b7 into main May 26, 2026
50 checks passed
@willwashburn willwashburn deleted the chore/extract-workflows-to-relayflows branch May 26, 2026 22:57
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.

1 participant