feat(integrations): AWS SES, IAM Identity Center, and enhanced IAM/STS/CloudWatch/DynamoDB#4245
feat(integrations): AWS SES, IAM Identity Center, and enhanced IAM/STS/CloudWatch/DynamoDB#4245waleedlatif1 merged 12 commits intostagingfrom
Conversation
…M/STS/CloudWatch/DynamoDB integrations - Add AWS SES v2 integration with 9 operations (send email, templated, bulk, templates, account) - Add AWS IAM Identity Center integration with 12 operations (account assignments, permission sets, users, groups) - Add 3 new IAM tools: list-attached-role-policies, list-attached-user-policies, simulate-principal-policy - Fix DynamoDB duplicate subBlock IDs, add operation-scoped field names, add subblock migrations - Add authMode: AuthMode.ApiKey to DynamoDB block - Fix CloudWatch routes: toError, client.destroy(), withRouteHandler, auth outside try - Fix STS/DynamoDB/IAM routes: nullable Zod schemas, withRouteHandler adoption - Fix Identity Center: list_instances pagination, list_groups instanceArn condition - Add subblock migrations for renamed DynamoDB fields (key, filterExpression, etc.) - Apply withRouteHandler to all new and existing AWS tool routes
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryMedium Risk Overview Expands AWS tool surface area and docs: IAM gains endpoints/docs for listing attached role/user policies and simulating principal policy; DynamoDB endpoints/docs add conditional writes/deletes plus pagination/sort controls for query/scan; STS and CloudWatch docs are clarified and CloudWatch routes are updated to improve logging, error formatting ( Adds a new Reviewed by Cursor Bugbot for commit 8e64140. Configure here. |
…compatibility Workflows saved with the old shared IDs (key, filterExpression, etc.) that migrate to get-scoped slots via subblock-migrations still work correctly on update/delete/scan/put operations via fallback lookups in tools.config.params.
|
@greptile |
|
@cursor review |
Greptile SummaryThis PR adds AWS SES v2 (9 operations), AWS IAM Identity Center (12 operations), and 3 new IAM tools, while refactoring existing CloudWatch, DynamoDB, IAM, and STS routes to use Confidence Score: 5/5PR is safe to merge; all previously reported issues have been addressed and no new blocking defects were found. All previously flagged issues (delete conditionExpression fallback, pageSize min(0), send-email bodyText/bodyHtml refine check) have replies indicating they were fixed. The DynamoDB migration has correct fallback chains (updateKey || getKey, deleteKey || getKey, scanFilterExpression || queryFilterExpression) covering legacy workflows. New SES, Identity Center, and IAM tools follow consistent patterns with withRouteHandler, client.destroy(), and toError. Remaining findings are P2 style suggestions only. No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[Block params function] --> B{operation}
B --> C[SES Block - 9 ops]
B --> D[Identity Center Block - 12 ops]
B --> E[IAM Block - 3 new ops]
B --> F[DynamoDB Block - refactored]
C --> C1[send_email / send_templated_email / send_bulk_email]
C --> C2[list_identities / get_account]
C --> C3[create / get / list / delete template]
D --> D1[list_instances / list_accounts / describe_account]
D --> D2[list_permission_sets / get_user / get_group / list_groups]
D --> D3[create / delete account_assignment / check status / list_account_assignments]
E --> E1[list_attached_role_policies]
E --> E2[list_attached_user_policies]
E --> E3[simulate_principal_policy]
F --> MIG[Migration: shared IDs to scoped IDs]
MIG --> M1[key to getKey]
MIG --> M2[filterExpression to queryFilterExpression]
MIG --> M3[conditionExpression to updateConditionExpression]
F --> FB[Params fallbacks in code]
FB --> FB1[updateKey OR getKey]
FB --> FB2[deleteKey OR getKey]
FB --> FB3[scanFilterExpression OR queryFilterExpression]
D1 --> AWS1[OrganizationsClient - us-east-1]
D2 --> AWS2[IdentitystoreClient]
D3 --> AWS3[SSOAdminClient]
C1 --> AWS4[SESv2Client]
Reviews (4): Last reviewed commit: "fix(aws): add gradient background to Ide..." | Re-trigger Greptile |
…on (#4242) * feat(contact): add contact page, migrate help/demo forms to useMutation * improvement(contact): address greptile review feedback - Map contact topic to help email type for accurate confirmation emails - Drop Zod schema details from 400 response on public /api/contact - Wire aria-describedby + aria-invalid in LandingField for both forms - Reset helpMutation on modal reopen to match demo-request pattern * improvement(landing): extract shared LandingField component
…ations routes (#4243) * fix(layout): use plain inline script for PublicEnvScript to set env before chunks eval on error pages * fix(landing): handle runtime env race on error-page renders React skips SSR on unhandled server errors and re-renders on the client (see vercel/next.js#63980, #82456). Root-layout scripts — including the runtime env script that populates window.__ENV — are inserted but not executed on that client re-render, so any client module that reads env at module evaluation crashes the render into a blank "Application error" overlay instead of rendering the styled 404. This replaces the earlier PublicEnvScript tweak with the architectural fix: - auth-client.ts: fall back to window.location.origin when getBaseUrl() throws on the client. Auth endpoints are same-origin, so this is the correct baseURL on the client. Server-side we still throw on genuine misconfig. - loading.tsx under /models/[provider], /models/[provider]/[model], and /integrations/[slug]: establishes a Suspense boundary below the root layout so a page-level notFound() no longer invalidates the layout's SSR output (the fix endorsed by Next.js maintainers in #63980). - layout.tsx: revert disableNextScript — the research showed this doesn't actually fix error-page renders. The real fix is above. * improvement(landing): use emcn Loader in scoped loading.tsx, trim auth-client comment Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
…ete, fix SES pageSize min
…amoDB integrations - IAM: replace non-existent StatementId with SourcePolicyType in simulatePrincipalPolicy - IAM: add .int() constraint to list-users/roles/policies/groups Zod schemas - IAM: remove redundant manual requestId from all 21 IAM route handlers - SES: add .refine() body validation to create-template route - SES: make bulk email destination templateData optional, only include ReplacementEmailContent when present - SES: fix pageSize guard to if (pageSize != null) to correctly forward 0 - SES: add max(100) to list-templates pageSize, revert list-identities to min(0) per SDK - STS: fix logger.error calls to use structured metadata pattern - Identity Center: remove deprecated account.Status fallback, use account.State only - DynamoDB: convert empty interface extends to type aliases, remove redundant error field, fix barrel to absolute imports
|
@greptile |
|
@cursor review |
|
@greptile |
|
@cursor review |
|
@greptile |
|
@cursor review |
…lates pageSize guard
|
@greptile |
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 8e64140. Configure here.
Summary
withRouteHandler,toError,client.destroy(), nullable Zod schemaswithRouteHandlerto all new route files (SES, Identity Center, new IAM routes)Type of Change
Testing
Tested manually
Checklist