Skip to content

feat(zapier): bump Zapier SDK to 0.119.0 with idempotent action runs and waiting test runs - #63

Open
hamchowderr wants to merge 9 commits into
mainfrom
claude/zapier-sdk-0-119
Open

hamchowderr wants to merge 9 commits into
mainfrom
claude/zapier-sdk-0-119

Conversation

@hamchowderr

Copy link
Copy Markdown
Owner

Stacked on #62. Its base is main so CI runs, which means the diff also shows #62's commits until #62 merges. The last four commits are this PR's own.

Before:

  • Foreman ran Zapier SDK 0.115.1 and CLI 0.86.7.
  • A retried action run could run the action twice.
  • Testing an automation returned only "initialized", so the agent had to call inspect_automation to see what happened.

After:

  • Foreman runs SDK 0.119.0, CLI 0.89.0 and durable 0.14.3.
  • Every run-action / create-action-run call carries an idempotency key, so a replay of the same call returns the original run instead of acting again.
  • A draft test run waits up to 30 seconds and returns its output or error directly.

What's new in the SDK and CLI, and what Foreman does with it

  • 0.116.0: idempotencyKey on fetch. Not wired in: fetch is positional, and its tool already exposes the option to the model.
  • 0.116.1: connectionId on ZapierActionError and ZapierRelayError. No change needed.
  • 0.116.2: one fewer API request per action run. Free.
  • 0.117.0: taxonomy.categories and registry category descriptions. Nothing to use yet.
  • 0.118.0: idempotencyKey on runAction and createActionRun. Defaults to foreman:<toolCallId>, which stays stable across the approval suspend/resume. A key the model passes itself wins.
  • 0.119.0: Next Gen Zaps methods moved to /beta, plus a new runWorkflow and waitSeconds. Draft test runs now pass waitSeconds: 30. /experimental still includes all the beta methods, so imports are unchanged. Live runs keep going through triggerWorkflow and the reconcile worker, which records them.
  • CLI 0.87–0.89: setup --agent, --idempotency-key, run-workflow and --wait-seconds. Dev tooling only, no Foreman change.

Registry: the mcp registry is still 58 methods, and the partition test passes with no new classifications. The durable sandbox's aged pins (AGED_DURABLE_DEPS) are unchanged, since moving them needs the live probe.

How: ran npm test (573 passed), agents tsc --noEmit (clean) and npm run lint (warnings only, same as main).


Generated by Claude Code

Every @mastra/* pin moves together (core/deployer/server 1.80.0, memory
1.39.1, observability 1.22.0, pg 1.33.0, rag 2.7.1, mastra CLI 1.36.0).

Breaking: AgentController sessions are now keyed by session id. The
createSession `scope` option and getSessionByResource are gone, and
channel resolveResourceId receives the request context.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CALPMzkCJ9sfSvDy7PCSZK
next build refuses to finish on 16.4.0 because of a known vulnerability.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CALPMzkCJ9sfSvDy7PCSZK
…14.3

No registry changes on the stable surface: the mcp registry still holds
the same 58 methods. The Next Gen Zaps methods moved to /beta, and
/experimental still includes them, so imports stay as they are.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CALPMzkCJ9sfSvDy7PCSZK
…n twice

Uses the SDK 0.118.0 idempotencyKey on runAction and createActionRun.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CALPMzkCJ9sfSvDy7PCSZK
Draft test runs pass the SDK 0.119.0 waitSeconds (30s) and return the
run's output or error when it ends in time.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CALPMzkCJ9sfSvDy7PCSZK
@vercel

vercel Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
foreman Ready Ready Preview Oct 30, 2026 11:13pm UTC

Request Review

GitHub's runners now ship bwrap, so the isolated path runs in CI and was
broken (red on main since 2026-10-25):
- bwrap refuses a bind source that doesn't exist, and the runner named
  every ancestor node_modules, including ones that don't exist.
- Only the working directory was writable, but the durable journal is
  written to the tenant state dir above it, so no approval gate was ever
  recorded. The state dir is now passed as a read-write path.

The sandbox-provider test assumed no host has bwrap; it now checks the
backend is forwarded on hosts with and without it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CALPMzkCJ9sfSvDy7PCSZK

This branch was successfully deployed

1 active deployment
Preview — cb161f4f Deployed Oct 30, 2026 by vercel[bot]
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