Skip to content

fix(aws): validate AWS integrations against SDK and API docs - #9952

Merged
waleedlatif1 merged 6 commits into
stagingfrom
fix/aws-suite-validation
Nov 12, 2026
Merged

waleedlatif1 merged 6 commits into
stagingfrom
fix/aws-suite-validation

Conversation

@waleedlatif1

@waleedlatif1 waleedlatif1 commented Nov 12, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • DynamoDB:
    • Get, query, scan and update failed whenever an item held an integer above 2^53: the SDK returned a BigInt and Response.json threw. Those numbers now come back as exact strings.
    • String, number and binary sets serialized as {} and now come back as arrays.
    • Binary values serialized as index objects and now come back as base64.
    • New optional projectionExpression, consistentRead, indexName, parallel scan segment/totalSegments, and returnValues on put, delete and update. Update still defaults to ALL_NEW.
    • New outputs: scannedCount and table stream/ARN fields.
  • RDS Data API:
    • SELECT rowCount was always 0 and is now the row count. Writes are unchanged.
    • Insert/update placeholders now match the sanitized column names, so quoted keys no longer fail.
    • New optional parameters binding (with typeHint) for query/execute; generatedFields returned.
  • Athena:
    • The first result row was always dropped, which lost real data for DDL/utility statements. It is now dropped only when it matches the column names, or when column metadata is missing, as before.
    • New start-query encryption, expectedBucketOwner and clientRequestToken; execution athenaError, timings and engineVersion; column label, precision and scale.
  • SES:
    • Templated and bulk sends gain Reply-To through their own field, so a value saved for Send Email never carries over.
    • Bulk destinations now pass through ccAddresses/bccAddresses, which used to be silently stripped. Malformed values are still dropped rather than failing the send.
    • New fromName and emailTags (validated against the SES tag rules).
    • Account sandbox/enforcement status.
  • SQS: on the hosted deployment, queue URLs must be real SQS hostnames over https, because the SDK sends signed requests to the queue URL's host. Self-hosted installs keep SQS-compatible endpoints (LocalStack, ElasticMQ).
  • Lambda:
    • 13 advanced dropdowns had no unset option, so the editor persisted their first option. That disabled new event source mappings and reset tracing, SnapStart, log format, function URL invoke mode and CORS credentials on every update.
    • They now default to AWS's own default, or to unchanged on updates. Saved values are untouched.
    • New invoke tenantId, application/system log levels, GetFunction code.error and tagsError.
  • S3:
    • Object keys containing !'()* are now signed the way the SDK signs them; other keys sign identically.
    • Get Object returns ETag, version, storage class, SSE and user metadata.
    • List gains Delimiter/StartAfter and CommonPrefixes.
    • Put gains metadata, storage class and SSE. These default to the bucket's own settings.
  • Textract: Queries are reachable from the block; async jobs report jobStatus/statusMessage/warnings (partial success). Sync input over AWS's 10 MB limit fails fast instead of downloading 100 MB first.
  • Secrets Manager:
    • Binary secrets are readable (returned as base64); they used to throw.
    • List filters and sort; create/update KMS key and tags.
    • Describe dates and version stages in the block outputs.
  • CloudWatch:
    • Alarms, log events and log streams now return paging tokens.
    • Alarm config, actions, dimensions and metric-math fields.
    • Percentile (ExtendedStatistics) and unit on metric statistics.
  • CloudFormation:
    • Stack parameters, capabilities, export names and detailed status.
    • Change-set details, parameters, tags and paging.
    • RoleARN and termination protection.
  • IAM / STS / Identity Center:
    • Get Role now returns its documented permissions boundary and tags, which used to come back empty.
    • Create user/role gain permissions boundary and tags; list policies gains a usage filter.
    • AssumeRole gains SourceIdentity.
    • Identity Center user name parts, status and external IDs.
  • EC2: Describe Instances returns block devices, network interfaces, platform, state codes, IMDS settings, lifecycle and monitoring.
  • Response contract schemas now describe every new field.
  • Backwards compatibility:
    • No param, subBlock id, operation value, tool id or output was removed, renamed or retyped, and no default changed.
    • New block fields are scoped to their own operations in tools.config.params.
    • The only output values that change are ones that previously errored, were always empty, or were unusable: {} sets and index-object binary.

Follow-ups (not in this PR)

  • SES attachments: deferred. Attachment reads authorize via context.userId, the shared tool-file boundary; the new egress path should land with that boundary taking the acting principal.
  • EC2 RunInstances and DryRun.
  • CloudFormation TemplateURL, which needs a contract change to make templateBody optional.
  • Percentile-only metric statistics.
  • STS credential outputs could be hidden from logs; left alone here because it changes what existing logs and API responses show.
  • CloudWatch Logs Insights queries are not stopped on poll timeout.

Type of Change

  • Bug fix
  • New feature (additive params and outputs)

Testing

  • New regression tests, each red on the pre-fix code:
    • DynamoDB unmarshalling, through the real DocumentClient middleware
    • RDS SELECT rowCount and quoted-column placeholders
    • Athena DDL first row
    • SES templated Reply-To, bulk Cc/Bcc and From-name encoding
    • SQS host guard (hosted rejects EC2/API Gateway/http hosts; self-hosted LocalStack allowed)
    • S3 signature, checked against @smithy/signature-v4
  • vitest over every touched tools/, lib/internal/ and block test for these services, plus lib/api/contracts/tools/aws: 220 passed.
  • check-block-registry.ts origin/staging, check:tool-metadata, check:docs, check:integration-catalog and biome pass.
  • An independent review of the full diff checked it against the installed AWS SDK types; its findings are fixed here.
  • Type-check and check:audits run in CI.

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing (new tests pass the test-audit authoring gate)
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

@vercel

vercel Bot commented Nov 12, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
docs Ready Ready Preview Nov 12, 2026 10:41pm UTC

Request Review

@greptile-apps

greptile-apps Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[High impact] The PR appears safe to merge, with no new actionable findings confirmed.

Summary

This PR fixes AWS result conversion and signing, adds optional request fields, and exposes more AWS response details.

  • DynamoDB reads return JSON-safe values and expose more query options.
  • RDS queries bind named values and report returned rows.
  • Athena keeps real first rows and exposes more query details.
  • SES sends support reply addresses, sender names, and bulk copy recipients.
  • Hosted SQS calls accept only HTTPS AWS queue URLs.
  • Lambda settings can stay unset and expose more AWS options.
  • S3 tools support richer object details and upload settings.
  • Textract exposes query results and async job status.
  • Secrets Manager supports binary reads and more secret controls.
  • CloudWatch tools return paging tokens and fuller alarm and metric data.
  • CloudFormation calls accept more stack controls and return detailed pages.
  • AWS identity tools expose more role and user controls.
  • EC2 instance results include more device and network details.

No new actionable findings were confirmed. Tests were inspected, not run.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A[Configured AWS block] --> B[Map operation inputs]
  B --> C[Tool input checks]
  C --> D[AWS SDK call]
  D --> E[Convert AWS results]
  E --> F[Workflow outputs]
Loading

Reviews (7) · Last reviewed commit: "fix(ses): drop the new email attachments..." · Reviewed by Greptile

@waleedlatif1
waleedlatif1 force-pushed the fix/aws-suite-validation branch from d7b1391 to 4acd3b6 Compare November 12, 2026 20:53

@cubic-dev-ai cubic-dev-ai Bot left a comment •

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.

All reported issues were addressed

Reply with feedback, questions, or to request a fix.

Turn on auto-fix | Re-trigger cubic

Comment thread apps/sim/tools/athena/start_query.ts Resolved
Comment thread apps/sim/blocks/blocks/textract.ts Resolved
Comment thread apps/sim/lib/internal/iam/client.ts Resolved
Comment thread apps/sim/lib/internal/ses/client.ts Resolved
Comment thread apps/sim/tools/dynamodb/get.ts Resolved
Comment thread apps/sim/blocks/blocks/rds.ts Resolved
Comment thread apps/sim/blocks/blocks/rds.ts Resolved
Comment thread apps/sim/lib/internal/ec2/operations.ts Resolved
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

@waleedlatif1 I have started the AI code review. It will take a few minutes to complete.

@cubic-dev-ai cubic-dev-ai Bot left a comment •

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.

All reported issues were addressed across 181 files

Reply with feedback, questions, or to request a fix.

Turn on auto-fix | Re-trigger cubic

Comment thread apps/sim/blocks/blocks/iam.ts Resolved
Comment thread apps/sim/blocks/blocks/ses.ts Resolved
Comment thread apps/sim/blocks/blocks/iam.ts Resolved
@waleedlatif1
waleedlatif1 force-pushed the fix/aws-suite-validation branch from 0fe163d to 847ce42 Compare November 12, 2026 21:45
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

@waleedlatif1 I have started the AI code review. It will take a few minutes to complete.

@cubic-dev-ai cubic-dev-ai Bot left a comment •

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.

All reported issues were addressed across 181 files

Reply with feedback, questions, or to request a fix.

Turn on auto-fix | Re-trigger cubic

Comment thread apps/sim/blocks/blocks/ses.ts Resolved
@waleedlatif1
waleedlatif1 force-pushed the fix/aws-suite-validation branch from 847ce42 to 2c8316c Compare November 12, 2026 21:58
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

@waleedlatif1 I have started the AI code review. It will take a few minutes to complete.

@cubic-dev-ai cubic-dev-ai Bot left a comment

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.

No issues found across 181 files

Confidence score: 5/5

  • Automated review surfaced no issues in the provided summaries.
  • No files require special attention.

Turn on auto-fix | Re-trigger cubic

@waleedlatif1
waleedlatif1 force-pushed the fix/aws-suite-validation branch from 2c8316c to 4ceeb88 Compare November 12, 2026 22:20
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

@waleedlatif1 I have started the AI code review. It will take a few minutes to complete.

@cubic-dev-ai cubic-dev-ai Bot left a comment

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.

No issues found across 181 files

Confidence score: 5/5

  • Automated review surfaced no issues in the provided summaries.
  • No files require special attention.

You've manually re-run cubic several times on this PR. Each manual re-review checks the full PR again and counts toward your usage quota. To preserve your usage limits, we recommend letting cubic automatically review new commits.

Turn on auto-fix | Re-trigger cubic

Comment thread apps/sim/lib/internal/ses/operations.ts Resolved
Fixes DynamoDB items failing or serializing as {} (BigInt, sets, binary), RDS
SELECT rowCount always 0, Athena dropping the first row of DDL results, SES
templated/bulk sends missing Reply-To and bulk Cc/Bcc, Lambda dropdowns forcing
values on update, and binary Secrets Manager secrets. Adds missing documented
params and dropped response fields across the suite. All changes are additive.
The executor merges raw block inputs under the mapped params, so new params
named like an existing subBlock picked up values from other operations or
empty table rows. Always assign those keys in the block mappers (DynamoDB,
SES, CloudFormation, IAM, STS), tolerate string booleans and blank values in
the affected tools, add the remaining SDK partition SQS hosts, split long
non-ASCII SES From names into RFC 2047 words, and address review findings.
Send no IAM usage filter for All, assign Secrets Manager create/update KMS
key and tags explicitly, accept object or key/value IAM tag rows, reject
non-array SES email tags, require DynamoDB parallel-scan segments together
and below the total, restrict string scanIndexForward to true/false, and fix
SES test typing.
Attachment authorization goes through context.userId, the same shared
boundary other integrations use; adding a new file-egress path is out of
scope for a compatibility-first validation sweep.
@waleedlatif1
waleedlatif1 force-pushed the fix/aws-suite-validation branch from 4ceeb88 to 36cc4b2 Compare November 12, 2026 22:36
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

@waleedlatif1 I have started the AI code review. It will take a few minutes to complete.

@cubic-dev-ai cubic-dev-ai Bot left a comment

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.

No issues found across 180 files

Confidence score: 5/5

  • Automated review surfaced no issues in the provided summaries.
  • No files require special attention.

You've manually re-run cubic several times on this PR. Each manual re-review checks the full PR again and counts toward your usage quota. To preserve your usage limits, we recommend letting cubic automatically review new commits.

Turn on auto-fix | Re-trigger cubic

This branch was successfully deployed

1 active deployment
Preview — 36cc4b24 Deployed Nov 12, 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.

1 participant