Skip to content

feat(powerbi): add Power BI actions - #8538

Merged
BillLeoutsakosvl346 merged 10 commits into
stagingfrom
feat/powerbi-actions
Oct 2, 2026
Merged

BillLeoutsakosvl346 merged 10 commits into
stagingfrom
feat/powerbi-actions

Conversation

@BillLeoutsakosvl346

@BillLeoutsakosvl346 BillLeoutsakosvl346 commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Add eight Power BI actions for workspace/report/model discovery, DAX queries, standard refresh requests, and refresh history, with delegated Microsoft OAuth and three cascading selectors.
  • Add the supplied icon, operation-specific UI and typed outputs, seven templates, and generated documentation/catalog/API artifacts. Power BI documentation is fully generated from block/tool source without manual-content sections.
  • Use standard workflow failure handling with no executor/runtime changes. DAX errors fail the action even with HTTP 200; direct tool responses retain partial rows, while workflow error branches expose the standard error output. Document this limitation and keep refresh acceptance asynchronous.
  • Live Power BI testing completed in a dedicated test tenant: all eight actions and genuine OAuth token refresh passed.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation
  • Other: ___________

Testing

  • 708 focused and existing unit tests across 61 files; all 11 Power BI real-infrastructure tests with disposable PostgreSQL/Redis.
  • Revised failure-output cases demonstrated two intended failures before rollback, then passed with standard execution behavior. Existing direct-tool tests retain partial rows, typed errors, dynamic columns, and falsy values.
  • 28 authenticated running Next application checks using provider transport fixtures, plus persisted execution-state verification for unhandled failure and a real error-port Function handler.
  • Actual browser verification covers all eight operations, selectors/manual IDs, advanced fields, output tags, and light/dark rendering.
  • Live Microsoft OAuth authorization succeeded with the expected Power BI audience, required scopes, and test-account identity. Expiring only the local test credential triggered a genuine refresh: the access token rotated, expiry advanced, the refresh token was retained, and Power BI accepted the renewed token.
  • All eight actions passed against real Power BI resources: workspace/report/model discovery, report/model details, DAX query totals, one accepted refresh request, and refresh history confirming completion and an advanced loaded timestamp.
  • Live application checks also passed for empty DAX results, unhandled query failure, error-port handling, and stored failed outputs omitting partial query fields.
  • Independent integration/selector/memory audit and scoped test-review/cleanup completed with zero critical or warning findings.
  • App/docs/deployment-config/CLI type checks, lint, all 54 repository audits, block-registry validation, generator drift checks, docs-manifest verification, and whitespace checks passed.
  • Regenerated the full graph baseline. Independent comparison with fresh staging confirms each of the 35 affected graphs adds only the Power BI block module; broader measurement changes are verified upstream catch-up.

Latest documentation update: deleting and regenerating the Power BI page and running generation again both produced byte-for-byte identical output. All eight catalog action descriptions are populated, the overview uses plain text, and the DAX action explicitly documents the effective 10 MiB limit. Generated changes are limited to Power BI descriptions/catalog entries, and implementation code is unchanged. Reran 34 Power BI/selector tests, four workspace type checks, lint, all 54 audits, block-registry validation, generator/manifest checks, and whitespace checks. The broader unit, infrastructure, running-app, browser, and independent-audit results above are from the preceding runtime revision. Greptile and cubic reviewed the final documentation revision at 5/5 with zero unresolved threads. All five applicable CI jobs passed, including the app build, lint/tests, both PostgreSQL integration modes, and real HTTP end-to-end checks. The PR remains unmerged.

Live validation used a dedicated test tenant and a locally configured Microsoft application. It verifies the tested account and resources, not every customer tenant or Sim's production OAuth configuration. Before public deployment, confirm the existing production Microsoft app supports organizational multitenant access, has the Power BI delegated permissions, and registers the deployment URL with /api/auth/oauth2/callback/microsoft-powerbi. Check the existing app's publisher-verification status. Customer tenants may require administrator consent; users still need appropriate licensing and workspace/resource permissions, and DAX requires model Read/Build permissions and the tenant Execute Queries setting enabled.

Checklist

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

Screenshots/Videos

Redacted fixture and live browser evidence, JSON/HTTP/execution reports, and token-refresh evidence are retained outside Git. Dedicated live-test resources were used; credentials, account identifiers, and private resource URLs are excluded from the PR.

@vercel

vercel Bot commented Oct 1, 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 Oct 2, 2026 2:09am UTC

Request Review

@greptile-apps

greptile-apps Bot commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[Medium risk] Adds Power BI integration with new actions and OAuth provider.

The PR appears safe to merge based on the changes reviewed.

Summary

The PR adds eight Power BI actions with delegated Microsoft OAuth, resource selectors, typed outputs, and generated documentation. The changes since the previous review restore the DAX catalog description and replace Markdown in the plain-text integration overview.

Reviews (7) · Last reviewed commit: "fix(powerbi): keep generated catalog des..."

Comment thread apps/sim/tools/powerbi/powerbi.integration.ts Outdated

@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.

2 issues found across 54 files

Confidence score: 4/5

  • In powerbi.ts, missing headers can produce null values even though the outputs are declared as strings, which can leave workflow consumers with values that don't match the block schema. Mark both outputs nullable.
  • In provider-fixture.ts, resolving api.powerbi.com to routable 8.8.8.8 lets requests that bypass the patched adapters reach a public IP instead of the loopback fixture. Use a fail-closed, non-routable resolution.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="apps/sim/blocks/blocks/powerbi.ts">

<violation number="1" location="apps/sim/blocks/blocks/powerbi.ts:418">
P2: `requestId` and `location` can be `null` when Power BI omits their headers, but these block outputs declare plain strings. Extend the block output metadata to mark both fields nullable so workflow consumers do not assume they always receive strings.

(Based on your team's feedback about nullable always-present outputs.)</violation>
</file>

<file name="apps/sim/tools/powerbi/__fixtures__/provider-fixture.ts">

<violation number="1" location="apps/sim/tools/powerbi/__fixtures__/provider-fixture.ts:237">
P3: Resolving `api.powerbi.com` to `8.8.8.8` (Google, routable) is fail-open despite the fail-closed comment: the patched `https.request`/`fetch` redirect this host to the loopback fixture, but any code path that resolves the host through the patched `dns.lookup` and then connects without going through those two patched boundaries would reach the real network. Point the fixture at a non-routable TEST-NET address (e.g., `192.0.2.1`) so an accidental leak fails instead of egressing.</violation>
</file>

Tip: instead of fixing issues one by one fix them all with cubic

Re-trigger cubic

Comment thread apps/sim/executor/execution/block-executor.ts Outdated
Comment thread apps/sim/executor/handlers/generic/generic-handler.ts Outdated
Comment thread apps/sim/tools/powerbi/get-dataset.ts
Comment thread apps/sim/tools/powerbi/types.ts Outdated
Comment thread apps/sim/tools/powerbi/execute-query.ts Outdated
Comment thread apps/sim/tools/powerbi/get-report.ts
Comment thread apps/sim/lib/selectors/manifest.ts Outdated
Comment thread apps/sim/blocks/blocks/powerbi.ts
Comment thread apps/sim/lib/oauth/utils.ts
Comment thread apps/sim/tools/powerbi/__fixtures__/provider-fixture.ts Outdated
@BillLeoutsakosvl346

Copy link
Copy Markdown
Contributor Author

@greptile

@BillLeoutsakosvl346

Copy link
Copy Markdown
Contributor Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

@BillLeoutsakosvl346 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 58 files

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

Fix all with cubic | Re-trigger cubic

Comment thread apps/sim/executor/execution/block-executor.ts Outdated
Comment thread apps/sim/tools/powerbi/__fixtures__/provider-fixture.ts Outdated
@BillLeoutsakosvl346

Copy link
Copy Markdown
Contributor Author

@greptile

@BillLeoutsakosvl346

Copy link
Copy Markdown
Contributor Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

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

@BillLeoutsakosvl346

Copy link
Copy Markdown
Contributor Author

@greptile

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

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

Fix all with cubic | Re-trigger cubic

Comment thread apps/sim/tools/powerbi/__fixtures__/provider-fixture.ts
@BillLeoutsakosvl346

Copy link
Copy Markdown
Contributor Author

@greptile

@BillLeoutsakosvl346

Copy link
Copy Markdown
Contributor Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

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

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

Fix all with cubic | Re-trigger cubic

Comment thread apps/sim/tools/powerbi/execute-query.ts
Comment thread scripts/check-tool-registry-boundary.baseline.json Outdated
@BillLeoutsakosvl346

Copy link
Copy Markdown
Contributor Author

@greptile

@BillLeoutsakosvl346

Copy link
Copy Markdown
Contributor Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

@BillLeoutsakosvl346 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 51 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.

Re-trigger cubic

@BillLeoutsakosvl346

Copy link
Copy Markdown
Contributor Author

@greptile

@BillLeoutsakosvl346

Copy link
Copy Markdown
Contributor Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

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

Comment thread apps/sim/tools/powerbi/execute-query.ts Outdated
Comment thread apps/sim/blocks/blocks/powerbi.ts Outdated

@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

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.

Fix all with cubic | Re-trigger cubic

Comment thread apps/sim/tools/powerbi/execute-query.ts Outdated
@BillLeoutsakosvl346

Copy link
Copy Markdown
Contributor Author

@greptile

@BillLeoutsakosvl346

Copy link
Copy Markdown
Contributor Author

@cubic-dev-ai review this PR

@cubic-dev-ai

cubic-dev-ai Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

@cubic-dev-ai review this PR

@BillLeoutsakosvl346 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 51 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.

Re-trigger cubic

@BillLeoutsakosvl346
BillLeoutsakosvl346 merged commit 8a82103 into staging Oct 2, 2026
32 checks passed
@BillLeoutsakosvl346
BillLeoutsakosvl346 deleted the feat/powerbi-actions branch October 2, 2026 18:04

This branch was successfully deployed

1 active deployment
Preview — 64a9fb4a Deployed Oct 2, 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