Skip to content

fix(integrations): close stale and empty value leaks from the Google and Microsoft sweeps - #9960

Merged
waleedlatif1 merged 2 commits into
stagingfrom
fix/workspace-suites-final-pass
Nov 12, 2026
Merged

waleedlatif1 merged 2 commits into
stagingfrom
fix/workspace-suites-final-pass

Conversation

@waleedlatif1

Copy link
Copy Markdown
Collaborator

Summary

This PR comes from a final staging→main review of the Google (#9947, #9954) and Microsoft (#9949) integration sweeps. The review targeted backwards compatibility for workflows saved on main. Most fixes share one root cause:

  • The generic handler builds tool params as { ...inputs, ...transformedParams }.
  • The serializer fills empty defaults for dropdowns declared with value: () => '', and keeps advanced values when advanced options are collapsed.
  • So a value stored for another operation, or a never-touched empty default, reached a tool whenever the block mapper skipped that key.

Fixes:

  • Outlook:
    • Reply, Reply All and Forward now always set cc/bcc. Before, a CC saved while the block was on Send was added to replies and forwards after switching operations.
    • Send and Draft now always set importance. Before, an Update Message importance leaked into sends.
    • The new Importance dropdown defaults to unset, where it used to persist "Low".
  • Google Groups Update Settings: the mapper assigns every setting. Before, an untouched block sent five settings as '', where main sent an empty PATCH.
  • Google Tasks List: the tri-state filters are assigned explicitly, and the tool skips empty values. Before, showHidden=&showDeleted=&showAssigned= were sent when advanced options were shown.
  • OneDrive: "If File Exists" defaults to unset, so opening an old upload block no longer starts sending conflictBehavior=replace.
  • Google Sheets: a Batch Get Major Dimension is cleared for every other operation. Before, it could transpose Read/Write values.
  • Azure DevOps:
    • List Pipelines and Get Comments keep main's fallback to the shared Max Results value.
    • Each paged operation has its own continuation token.
    • Multi-item reads (query, batch) omit the raw field bag and relations to keep payloads near main's size. Single-item reads keep them.
  • SharePoint upload: . folder segments are dropped, as on main. .. is still rejected.
  • Entra: transitive and includeManager use one strict check, so "false" stays off.
  • Dataverse: a cleared Page Size counts as unset.
  • Behaviour-neutral cleanups:
    • A shared Gmail header lookup.
    • One Groups settings mapper.
    • Word reuses OneDrive's identity mapper and one metadata output constant.
    • One Dataverse isSet.
    • SharePoint internals use graphPathSegment.
    • Typed identity reads in Azure DevOps.
    • Teams fallback trigger payload sets new outputs to null.
    • Smaller Calendar and Meet tidy-ups.
    • One Azure DevOps test now uses vi.stubGlobal.

Type of Change

  • Bug fix

Testing

  • New regression tests for the Outlook, Google Groups and Google Tasks block mappers. All 6 fail on the pre-fix staging code and pass now.
  • vitest across 62 files: 555 passed, covering the touched tools, blocks, internal operations, webhook providers and blocks.test.ts.
  • These checks pass:
    • check-block-registry.ts origin/staging
    • check:tool-metadata, check:docs, check:integration-catalog
    • check:utils, check:test-patterns
    • explicit-any
    • biome

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 11:24pm UTC

Request Review

@greptile-apps

greptile-apps Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no new actionable defects remain.

Summary

The PR prevents empty defaults and values saved for other operations from reaching Google and Microsoft tools.

  • Outlook actions use only the CC, BCC, and importance values for that action.
  • Google Groups settings updates leave untouched values out of the request.
  • Google Tasks list filters skip blank values instead of sending them.
  • Google Sheets clears the batch-read dimension when another operation runs.
  • Azure DevOps keeps separate page tokens and the saved page size for each list.
  • Azure DevOps list reads return compact work items while single reads keep raw details.
  • OneDrive upload leaves the file-conflict choice unset by default.
  • SharePoint upload paths drop dot folders and keep valid Graph IDs encoded.
  • Entra options turn on only for true values.
  • Dataverse treats a blank page size as unset.
  • Teams fallback trigger payloads include the new message fields.
  • Gmail draft and thread reads use one shared header lookup.
  • Microsoft Word tools share one identity mapper and metadata output shape.
  • Supporting integration helpers keep their existing behavior while their shared code is tidied.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A[Saved block inputs] --> B[Operation-specific mapper]
  A --> C[Merge inputs]
  B -->|Explicit values or unset overrides| C
  C --> D[Tool input]
  D --> E[Provider request]
Loading

Reviews (2) · Last reviewed commit: "fix(integrations): render Azure DevOps l..." · Reviewed by Greptile

Comment thread apps/sim/blocks/blocks/azure_devops.ts Resolved

@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 51 files

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

Turn on auto-fix | Re-trigger cubic

Comment thread apps/sim/blocks/blocks/outlook.ts Resolved
Comment thread apps/sim/blocks/blocks/azure_devops.ts Resolved
Comment thread apps/sim/tools/azure_devops/utils.ts Resolved
…and Microsoft sweeps

Final staging-to-main review of #9947, #9954 and #9949. The executor merges raw subBlock values
under the block mapper's output, so a value stored for another operation (or an empty default the
serializer fills in) reached tools whenever the mapper skipped that key.

- Outlook: reply, reply-all and forward always set cc/bcc, so a Send cc never reaches them; send
  and draft always set importance; the new Importance dropdown defaults to unset
- Google Groups Update Settings assigns every setting, so unchanged settings are never sent as ''
- Google Tasks List assigns its tri-state filters and the tool skips empty values
- OneDrive "If File Exists" defaults to unset so opening an old upload block sends nothing new
- Google Sheets clears a Batch Get major dimension for every other operation
- Azure DevOps: List Pipelines and Get Comments keep main's Max Results fallback, each paged
  operation has its own continuation token, and multi-item reads omit the raw field bag
- SharePoint upload drops "." folder segments as before and still rejects ".."
- Entra transitive and includeManager use one strict flag check; Dataverse treats a cleared page
  size as unset
- Behaviour-neutral cleanups: shared header lookup (Gmail), settings mapper (Groups), identity and
  metadata outputs (Word), isSet (Dataverse), graphPathSegment (SharePoint), typed identity reads
  (Azure DevOps), Teams fallback payload nulls
@waleedlatif1
waleedlatif1 force-pushed the fix/workspace-suites-final-pass branch from 3eb9bee to 691ac24 Compare November 12, 2026 23:18
@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 54 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

This branch was successfully deployed

1 active deployment
Preview — 691ac24d 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