feat(vercel): patches from vercel alchemy generation - #457
Draft
sam-goodwin wants to merge 5 commits into
Draft
Conversation
… errors and shape fixes
Produced by alchemy's Vercel provider bring-up — every patch was surfaced
by a live test against the real API (the typed-error flywheel).
- core codegen: OpenAPI binary request bodies (application/octet-stream)
now emit a raw httpPayload member with bodyMediaType instead of being
dropped — unblocks deployments.uploadFile, artifacts.uploadArtifact
- patches/ for vercel, laid out patches/{service}/{operationId}.patch.json
(one file per operation, mirroring cloudflare's layout; README included);
convert.ts scans service subdirectories in sorted relative-path order
- 31 patch files across 8 services: typed 404/409/449 adds, request-body
shape fixes (dns.createRecord anyOf flattening, createProjectEnv,
rolling-release body), response fixes (access-groups list oneOf,
edge-config slug params), and the real-but-undocumented storage
endpoints (GET /v1/storage/stores, /v1/storage/stores/{id}/connections)
the official CLI uses
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
|
Install the packages built from this commit: Distilled@distilled.cloud/core bun add https://pkg.ing/@distilled.cloud/core/3401096@distilled.cloud/aws bun add https://pkg.ing/@distilled.cloud/aws/3401096@distilled.cloud/axiom bun add https://pkg.ing/@distilled.cloud/axiom/3401096@distilled.cloud/azure bun add https://pkg.ing/@distilled.cloud/azure/3401096@distilled.cloud/cloudflare bun add https://pkg.ing/@distilled.cloud/cloudflare/3401096@distilled.cloud/coinbase bun add https://pkg.ing/@distilled.cloud/coinbase/3401096@distilled.cloud/discord bun add https://pkg.ing/@distilled.cloud/discord/3401096@distilled.cloud/expo-eas bun add https://pkg.ing/@distilled.cloud/expo-eas/3401096@distilled.cloud/fly-io bun add https://pkg.ing/@distilled.cloud/fly-io/3401096@distilled.cloud/gcp bun add https://pkg.ing/@distilled.cloud/gcp/3401096@distilled.cloud/github bun add https://pkg.ing/@distilled.cloud/github/3401096@distilled.cloud/kubernetes bun add https://pkg.ing/@distilled.cloud/kubernetes/3401096@distilled.cloud/mongodb-atlas bun add https://pkg.ing/@distilled.cloud/mongodb-atlas/3401096@distilled.cloud/neon bun add https://pkg.ing/@distilled.cloud/neon/3401096@distilled.cloud/planetscale bun add https://pkg.ing/@distilled.cloud/planetscale/3401096@distilled.cloud/posthog bun add https://pkg.ing/@distilled.cloud/posthog/3401096@distilled.cloud/prisma-postgres bun add https://pkg.ing/@distilled.cloud/prisma-postgres/3401096@distilled.cloud/railway bun add https://pkg.ing/@distilled.cloud/railway/3401096@distilled.cloud/stripe bun add https://pkg.ing/@distilled.cloud/stripe/3401096@distilled.cloud/supabase bun add https://pkg.ing/@distilled.cloud/supabase/3401096@distilled.cloud/turso bun add https://pkg.ing/@distilled.cloud/turso/3401096@distilled.cloud/typesense bun add https://pkg.ing/@distilled.cloud/typesense/3401096@distilled.cloud/vercel bun add https://pkg.ing/@distilled.cloud/vercel/3401096@distilled.cloud/workos bun add https://pkg.ing/@distilled.cloud/workos/3401096 |
Surfaced by the ProjectEnv resource's read path (project-gone observation). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A server hint beyond our patience window (e.g. Vercel's 5-per-day POST /v1/teams limit answering 429 with retry-after: 86400) means every capped retry provably lands inside the same window — retrying just burns the caller's timeout. The while predicates now fail fast, surfacing the typed throttling error (observed: a 120s test hang became a 169ms typed failure). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…vices Surfaced by alchemy's live suite: rolling-release request body, teams / project-members / routes / web-analytics / microfrontends / sandboxes / checks / feature-flags status+shape fixes, storage connections list, and getDeployment response repair (readySubstate missing from oneOf arm 0; readyState enum missing the live-verified DELETED). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
'All HTTP goes through distilled' — hand-authored manual-specs compile to
fully-typed data-plane services so alchemy's hand-written HTTP clients can
be deleted:
- core: HostLabel endpoint templates ({store}.blob.vercel-storage.com,
{region}.vercel-queue.com), header-presence error matchers (Edge
Config's 404-with-x-edge-config-digest item-vs-config discrimination),
http.accept, greedy path labels, a decodeSuccess hook for binary /
multipart-mixed responses, and a raw-payload fix so a modeled
content-type member is actually sent (also fixes latent R2 upload
behavior); JSON null 2xx bodies decode as null
- vercel: manual-specs/{blob_data,queues_data,edge_config_data}.json ->
generated services with typed error taxonomies; data-protocol with
per-call sensitive bearer tokens (no package Credentials), env
overrides (VERCEL_BLOB_API_URL, VERCEL_QUEUE_BASE_URL) preserved for
local emulation; multipart parser exported
- verified 38/38 against the local emulator contract and 33/35 live
(the 2 deltas were stale probe expectations, recorded in alchemy's
PROBES.md); all other services byte-identical
- includes a concurrent wave agent's getDeploymentFileContents patch
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Companion to the alchemy Vercel provider (alchemy-run/alchemy#1217). Every patch here was surfaced by a live test against the real Vercel API.
Core codegen — binary request bodies. The OpenAPI converter dropped
application/octet-streamrequest bodies entirely; it now emits a rawhttpPayloadmember withbodyMediaType, sent verbatim by the protocol layer:Patch layout.
patches/{service}/{operationId}.patch.json— one directory per service, one file per operation, mirroringcloudflare/patches/{service}/{op}.json(seepatches/README.md);convert.tsscans service subdirectories in sorted relative-path order.31 patches across 8 services:
getProject/deleteProject/getProjectDomains/getWebhook/deleteWebhook/custom-env + access-group ops, conflict/slug-collision errors, 449 →DomainPretestFailedonissueCertdns.createRecord(anyOf arms were dropped —name/value/ttl/srv/httpsrestored),createProjectEnv(wasunknown),updateRollingReleaseConfig(had no body at all)GET /v1/storage/stores,GET/POST /v1/storage/stores/{storeId}/connections(the store↔project connect flow that injectsBLOB_READ_WRITE_TOKEN)Verified by the alchemy Vercel live suite (60+ tests against a real Pro team) and a full 38-module regeneration.
🤖 Generated with Claude Code