feat(aws): broad patches from AWS fan-out - #369
Merged
Conversation
…ValidationException fixes - sqs: Successful/Failed optional on all three batch results (JSON protocol omits empty lists) - cloudwatch: typed describeAlarmContributors ValidationException - rds: typed createDBInstance cluster-member VpcSecurityGroupIds rejection - ec2: typed UnauthorizedOperation - cloudflare/workers: restore RouteScriptNotFound (10019) on createRoute - paginators (aws + core): empty-string tokens are terminal (infinite first-page loop) + unit tests - ValidationException: optional message/reason/fieldList - new @distilled.cloud/aws/Presign: SigV4 query-string presigning (presignUrl + presignS3Url) + unit tests Found live by the alchemy AWS resource-factory Wave 1A. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…MailFromAttributes patch
- generator extracts smithy.api#endpoint into operation metadata (endpointHostPrefix); api.ts applies it with {label} substitution, skipped for custom Endpoint overrides
- sfn regenerated: StartSyncExecution/TestState now target sync-states.*
- sesv2: GetEmailIdentityResponse.MailFromAttributes members optional (wire omits MailFromDomain when not configured)
Found live by alchemy AWS factory Wave 1B.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…to unknown) The event schema arrives via untyped AST annotations as Schema<unknown>, whose decoding-services slot is unknown; generated event schemas carry no decode services, so the effect is annotated service-free. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…lists, route-53 schema patches
- patches/{sdkId}.json gains per-operation syntheticErrors: typed error classes derived from a base wire error + message predicate (exact | includes | matches), matched before the base-code lookup; orphaned patch operation keys now fail generation
- applied to xray: SamplingRuleNotFound / SamplingRuleAlreadyExists / GroupNotFound / GroupAlreadyExists (X-Ray discriminates these solely by InvalidRequestException.Message)
- rest-xml deserializer handles Smithy's default <member>-wrapped non-flattened lists (found by Route53 live tests)
- route-53 response-schema patches (CreateHostedZoneResponse.DelegationSet et al)
- removed two dead ec2 patch keys ahead of hard-fail orphan detection
Found live by alchemy AWS factory Wave 1D.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- batch: ClientException syntheticErrors (not-found vs being-modified discrimination) - apprunner: lowercase enum members for AutoScalingConfigurationStatus + VpcConnectorStatus - servicediscovery: data- endpoint hostPrefix on DiscoverInstances; SOA.TTL + DnsConfig.DnsRecords optional Found live by alchemy AWS factory Phase 2 Wave 2A. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ave-5) Error/schema/syntheticError patches + regenerated services across EKS, EC2, Athena, Glue, Bedrock-agent, Inspector2, IoT, Macie2, Timestream, AMP, MWAA, QuickSight, DataSync, Amplify, VerifiedPermissions, etc. Wave 5 was interrupted mid-flight; some services are partially regenerated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…d tags, location/timestream schemas) - ec2: InvalidDhcpOptionsID.NotFound / InvalidFlowLogId.NotFound / InvalidVpcPeeringConnectionId.NotFound added to their describe ops - location: 64 endpointHostPrefix entries (cp.* control-plane endpoints) + Describe*/List* Description optionality - geo-routes: optional list members on Route*LegDetails - iot/timestream/etc. patches from wave 5 completion Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Patches (24 new) and regenerated services (27) for the AWS T2 coverage
waves: acm-pca, aiops, auditmanager, chatbot, cloudtrail, config-service,
controltower, cost-explorer, cost-and-usage-report-service, databrew,
datazone, docdb-elastic, emr, internetmonitor, kendra, kinesis-video,
lakeformation, license-manager, resource-groups, resource-explorer-2,
rolesanywhere, s3-control, securitylake, shield, signer, ssm-contacts,
ssm-incidents, synthetics, and others — adding resource-specific typed
error tags and synthetic message-matched errors verified against the live
APIs.
Generator/runtime fixes:
- generate.ts: derive a per-op `${Op}Request` schema when an input shape is
shared across operations with conflicting @http traits (was silently
baking one op's method/URI into the shared schema, so deletes issued GETs)
- api.ts: Unit-input operations keep their @http trait (were falling back to
POST /); rest-json.ts: send explicit `{}` body when the input has
body-capable members; error.ts: strip comma-joined x-amzn-errortype headers
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ices Core client work: - SigV2 auth support (traits.ts AwsAuthSigv2 + api.ts HMAC-SHA256 SigV2 signing branch) — classic SimpleDB is the last SigV2-only AWS service; hand-written simpledb service module (no Smithy model exists for the classic Query API) - aws-query.ts: fallback for SimpleDB's legacy <Response><Errors> error wrapper - rest-json.ts + util/stream.ts: geo-maps/places/routes data-plane fixes - generate.ts + traits.ts + response-parser.ts + rest-json.ts: iot-managed- integrations (newer service) protocol coverage Patches + regenerated services for E1/E2: ivs(+realtime/chat), imagebuilder, mediatailor, medialive, iotsitewise, lex-models-v2, bedrock-agentcore(+control), sagemaker(+featurestore-runtime), qbusiness, route-53-domains, omics, repostspace — resource-specific typed error tags + synthetic message-matched errors verified against the live APIs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- response-parser.ts + rest-json.ts core fixes for deadline/finspace response shapes - deadline: ResourceNotFoundException on delete ops; regenerated - finspace(+finspace-data): regenerated for the kdb/environment API - patches for mailmanager (reverted — deletes are natively idempotent) and deadline Services: devops-guru, mailmanager, healthlake, finspace, deadline, qapps, mwaa-serverless, socialmessaging, s3files. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds getAttributes/putAttributes/deleteAttributes/batchPut/batchDelete/select + 12 typed errors (flattened Attribute.N / Item.N wire shapes) to the hand-written simpledb module (no Smithy model exists — never regenerate). Backs the new AWS.SimpleDB per-operation bindings. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- cloudfront: FunctionConfig.Comment optional (omitted in listFunctions for comment-less functions) - rds: InvalidParameterValue/InvalidParameterCombination on createDBCluster/modifyDBCluster (non-retryable validation) - s3tables: GetTableResponse.modifiedBy optional (omitted on fresh tables) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- wafv2: WAFUnavailableEntityException on disassociateWebACL - s3: BucketHasAccessPointsAttached on deleteBucket (was UnknownAwsError) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
# Conflicts: # packages/cloudflare/patches/workers/createRoute.json # packages/cloudflare/src/services/workers.ts
Contributor
|
Install the packages built from this commit: @distilled.cloud/core bun add @distilled.cloud/core@https://pkg.distilled.cloud/core/6ed69ca@distilled.cloud/aws bun add @distilled.cloud/aws@https://pkg.distilled.cloud/aws/6ed69ca@distilled.cloud/axiom bun add @distilled.cloud/axiom@https://pkg.distilled.cloud/axiom/6ed69ca@distilled.cloud/azure bun add @distilled.cloud/azure@https://pkg.distilled.cloud/azure/6ed69ca@distilled.cloud/cloudflare bun add @distilled.cloud/cloudflare@https://pkg.distilled.cloud/cloudflare/6ed69ca@distilled.cloud/coinbase bun add @distilled.cloud/coinbase@https://pkg.distilled.cloud/coinbase/6ed69ca@distilled.cloud/expo-eas bun add @distilled.cloud/expo-eas@https://pkg.distilled.cloud/expo-eas/6ed69ca@distilled.cloud/fly-io bun add @distilled.cloud/fly-io@https://pkg.distilled.cloud/fly-io/6ed69ca@distilled.cloud/gcp bun add @distilled.cloud/gcp@https://pkg.distilled.cloud/gcp/6ed69ca@distilled.cloud/kubernetes bun add @distilled.cloud/kubernetes@https://pkg.distilled.cloud/kubernetes/6ed69ca@distilled.cloud/mongodb-atlas bun add @distilled.cloud/mongodb-atlas@https://pkg.distilled.cloud/mongodb-atlas/6ed69ca@distilled.cloud/neon bun add @distilled.cloud/neon@https://pkg.distilled.cloud/neon/6ed69ca@distilled.cloud/planetscale bun add @distilled.cloud/planetscale@https://pkg.distilled.cloud/planetscale/6ed69ca@distilled.cloud/posthog bun add @distilled.cloud/posthog@https://pkg.distilled.cloud/posthog/6ed69ca@distilled.cloud/prisma-postgres bun add @distilled.cloud/prisma-postgres@https://pkg.distilled.cloud/prisma-postgres/6ed69ca@distilled.cloud/stripe bun add @distilled.cloud/stripe@https://pkg.distilled.cloud/stripe/6ed69ca@distilled.cloud/supabase bun add @distilled.cloud/supabase@https://pkg.distilled.cloud/supabase/6ed69ca@distilled.cloud/turso bun add @distilled.cloud/turso@https://pkg.distilled.cloud/turso/6ed69ca@distilled.cloud/typesense bun add @distilled.cloud/typesense@https://pkg.distilled.cloud/typesense/6ed69ca@distilled.cloud/workos bun add @distilled.cloud/workos@https://pkg.distilled.cloud/workos/6ed69ca |
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Typed-error / schema patches: - ivs Regenerated: ivs Snapshot 2026-07-15 09:50 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Typed-error / schema patches: - fsx Regenerated: frauddetector, fsx Snapshot 2026-07-15 09:58 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Typed-error / schema patches: - quicksight Regenerated: quicksight Snapshot 2026-07-15 12:44 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Regenerated: rum Snapshot 2026-07-15 12:59 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Typed-error / schema patches: - redshift-serverless Regenerated: redshift-serverless Snapshot 2026-07-15 13:02 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… repostspace, route-53-domains Typed-error / schema patches: - redshift-serverless - repostspace - route-53-domains Regenerated: redshift-serverless, repostspace, route-53-domains Snapshot 2026-07-15 13:14 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Typed-error / schema patches: - resource-groups - s3 Regenerated: resource-groups, s3 Snapshot 2026-07-15 13:32 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Typed-error / schema patches: - s3 Regenerated: s3 Snapshot 2026-07-15 13:47 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…acts Typed-error / schema patches: - s3-control - ssm-contacts Regenerated: s3-control, ssm-contacts Snapshot 2026-07-15 14:02 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Typed-error / schema patches: - securitylake Regenerated: securitylake Snapshot 2026-07-15 14:18 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Typed-error / schema patches: - schemas Regenerated: schemas Snapshot 2026-07-15 14:33 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ialmessaging Typed-error / schema patches: - service-catalog - socialmessaging Regenerated: service-catalog, socialmessaging Snapshot 2026-07-15 14:48 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Typed-error / schema patches: - verifiedpermissions Regenerated: verifiedpermissions Snapshot 2026-07-15 15:03 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Typed-error / schema patches: - signer Regenerated: signer Snapshot 2026-07-15 15:33 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…n, lakeformation, license-manager, notifications Typed-error / schema patches: - amp - entityresolution - lakeformation - license-manager - notifications Regenerated: amp, entityresolution, lakeformation, license-manager, notifications Snapshot 2026-07-15 16:19 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Snapshot 2026-07-15 18:34 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…-lattice Typed-error / schema patches: - socialmessaging - vpc-lattice Regenerated: socialmessaging, vpc-lattice Snapshot 2026-07-15 19:19 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ve-1a # Conflicts: # packages/aws/src/services/amplify.ts # packages/aws/src/services/appflow.ts # packages/aws/src/services/application-signals.ts # packages/aws/src/services/apprunner.ts # packages/aws/src/services/bedrock-agentcore-control.ts # packages/aws/src/services/chatbot.ts # packages/aws/src/services/codepipeline.ts # packages/aws/src/services/comprehend.ts # packages/aws/src/services/datazone.ts # packages/aws/src/services/docdb.ts # packages/aws/src/services/elasticache.ts # packages/aws/src/services/emr-containers.ts # packages/aws/src/services/emr.ts # packages/aws/src/services/entityresolution.ts # packages/aws/src/services/eventbridge.ts # packages/aws/src/services/firehose.ts # packages/aws/src/services/frauddetector.ts # packages/aws/src/services/geo-routes.ts # packages/aws/src/services/imagebuilder.ts # packages/aws/src/services/inspector2.ts # packages/aws/src/services/iot-managed-integrations.ts # packages/aws/src/services/iot-wireless.ts # packages/aws/src/services/iotfleetwise.ts # packages/aws/src/services/license-manager.ts # packages/aws/src/services/location.ts # packages/aws/src/services/macie2.ts # packages/aws/src/services/mailmanager.ts # packages/aws/src/services/mq.ts # packages/aws/src/services/neptune.ts # packages/aws/src/services/quicksight.ts # packages/aws/src/services/repostspace.ts # packages/aws/src/services/resource-explorer-2.ts # packages/aws/src/services/resource-groups.ts # packages/aws/src/services/rolesanywhere.ts # packages/aws/src/services/route-53.ts # packages/aws/src/services/s3.ts # packages/aws/src/services/servicediscovery.ts # packages/aws/src/services/signer.ts # packages/aws/src/services/socialmessaging.ts # packages/aws/src/services/sqs.ts # packages/aws/src/services/verifiedpermissions.ts
Type retryable Deadline and AppRegistry failures surfaced by live AWS coverage. Hash buffered streaming payloads for API Gateway Management, Bedrock Runtime, IoT Data, IoT Wireless, and Lambda Invoke, with focused signer regressions.
Model IVS playback-key deletion internal failures and Omics analytics rate limits so consumers can apply bounded typed retries instead of receiving UnknownAwsError.
Amplify's control plane sits behind API Gateway, which times out slow calls with HTTP 504, x-amzn-errortype TimeoutException, body 'Endpoint request timed out' — previously an UnknownAwsError. Add the typed tag (optional message) to all 37 amplify operations. Deliberately no errorCategories: auto-retrying at the client would blindly re-run the non-idempotent CreateApp; the alchemy provider owns the observe-then- retry loop instead. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The previous format commit was made with oxfmt 0.58.0 hoisted from the outer alchemy workspace (catalog: latest); this repo's lockfile and CI pin 0.36.0, which rejects 0.58 output (e.g. parens around constructor return types), failing ci-aws/azure/gcp/posthog/... Reverts the 87 skewed files to 0.36 canon. tsc and oxlint unaffected. Note: any local `bun run check` inside this repo from within the alchemy checkout resolves the hoisted 0.58 binary and will disagree — use bunx oxfmt@0.36.0 until the two repos align versions. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Mkassabov
added a commit
that referenced
this pull request
Jul 20, 2026
From v0 main (bb54823..c9a7779), everything applicable: #369 (broad AWS fan-out): full machinery delta — synthetic errors (message-matcher-carved tags, spec-schema + response-parser + generator support), legacy SigV2 for SimpleDB (signed-body request built in AwsProtocol.encode; core executes it), smithy.api#endpoint hostPrefix (label substitution + double-prefix guard; carried through core OperationConfig as endpointHostPrefix), streaming-input UNSIGNED-PAYLOAD with the service denylist, S3 Control/Glacier payload SHA-256 precompute, the new Presign module + export, union overrides / sensitive / errorHttpStatus spec-patch capabilities, and the complete aws patches dir (which includes #383's ec2 duplicate security-group synthetic errors — 16 typed variants emitted). #374: single /*@__PURE__*/ annotation (Rolldown 1.1+ treats /*#__PURE__*/ as unknown) — both generators, all services re-emitted. #379: core pagination isTerminalToken (empty-string continuation tokens end pagination instead of looping); bodyMediaType on core's HttpTrait + raw-body path in protocol-http; Vectorize insert/upsert gain their previously-unmodeled application/x-ndjson body via manual patches; D1 params retyped string[] -> unknown[] (JSON values). #368: workers createRoute error 10019 typed as RouteScriptNotFound. #380 (rulesets status_code) not ported: v1's docs-derived model already types every status_code as a number — the string bug was in v0's openapi source. Planetscale/stripe PRs N/A (no such v1 packages); the typescript-7 migration is not taken (v1 stays on tsgo). Verified: typecheck + offline wire sanity across all four families.
Mkassabov
added a commit
that referenced
this pull request
Jul 21, 2026
… seam AWS never published a Smithy model for classic SimpleDB (2009-04-15 — it exists only in SDK v2/botocore), so v0 shipped it as a hand-written module and the model-driven regenerations here silently never produced it; alchemy main's SimpleDB providers (#797) import @distilled.cloud/aws/simpledb and every test file failed to load. Ported v0's live-verified module to the v1 emission style (core API.make + AwsProtocol + Retry, single PURE) — exercises the SigV2 signing path ported in #369. The barrel is directory-derived, so the file self-includes on regeneration and, having no model, is never overwritten; its header marks it hand-written.
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.
Every SDK gap surfaced by the alchemy AWS resource-factory run (alchemy-run/alchemy#797), fixed at the source. Started as Wave 1A and accreted the full run: protocol/core capabilities (SigV2 auth, Smithy hostPrefix, syntheticErrors, rest-xml member-wrapped lists, eventstream + rest-json fixes, a generator fix for per-op
@httpderivation on shared input shapes), a hand-writtensimpledbmodule, thePresignmodule, and per-service typed-error/schema patches from every live-test wave — through the final convergence loop (typed Amplify front-doorTimeoutException).The sections below document the original Wave 1A scope:
Schema & error patches (per-service)
Successful/Failedoptional onSendMessageBatchResult,DeleteMessageBatchResult,ChangeMessageVisibilityBatchResult— the JSON protocol omits empty lists; the required members crashed response decoding inside deployed Lambdas (SchemaError: Missing key ["Failed"])describeAlarmContributorswire error (ValidationExceptionwith empty message when an alarm has no contributor data)createDBInstancerejection for cluster-member instances givenVpcSecurityGroupIdsUnauthorizedOperation(EC2's generic authz failure, previously anUnknownAwsError)RouteScriptNotFound(code 10019) oncreateRoute— the patch entry was lost in a spec bump andpackages/alchemyalready handles the tagPaginator fix (aws + core)
Empty-string terminal tokens (
NextToken: ""from SSM/CloudWatch-Logs-style APIs) were treated as live tokens, re-requesting the first page forever. Bothaws/src/client/api.ts(isTerminalPageToken) andcore/src/pagination.ts(isTerminalToken, token + cursor modes) now stop on any falsy token, matching aws-sdk-js-v3. Unit tests cover empty-string, absent, and object (DynamoDBLastEvaluatedKey) tokens.ValidationExceptionmessageThe common AWS
ValidationExceptiondeclared no fields, so real AWS validation messages were invisible. It now carries optionalmessage,reason,fieldList.New:
@distilled.cloud/aws/PresignSigV4 query-string presigning over the same aws4fetch signer +
Credentials/Regionservices the client uses:presignUrlis the generic low-level form (any service/host/path);presignS3Urlhandles virtual-hosted vs path-style. Deterministic via injectabledatetime; 9 pure unit tests plus a live alchemy round-trip (real presigned PUT/GET against S3, content-type mismatch 403, expiry rejection).Two pre-existing unrelated test failures (
core test/server-retry-hint-cap.test.ts,aws test/protocols/rest-xml.test.tsresponseAlgorithms) verified present without these changes.🤖 Generated with Claude Code