feat(integrations): add Dynamics 365 CRM

Merged
BI
2mo ago
+7294-45

Summary

  • add a ten-operation Microsoft Dynamics 365 CRM block backed by eight isolated CRM tool modules
  • add environment-bound Microsoft Dataverse OAuth while preserving legacy Dataverse credentials and flows
  • enforce credential-derived environments, strict response parsing, redirect-safe bearer handling, and bounded one-page pagination
  • preserve the exact Dataverse nextLink while pairing it with the page size required for the next request
  • align Opportunity Close and Case Resolution optionality and description limits with Microsoft metadata

Compatibility and safety

  • supported Dynamics UI paths prevent credential rebinding; equivalent server-side enforcement is tracked in #6716 and remains a merge prerequisite
  • existing microsoft_dataverse_* implementations and documentation are unchanged; shared generated registries change additively to register Dynamics
  • a narrowly gated credential-selector policy enforces Dynamics environment matching; no data selectors or selector API routes were added
  • adds no Desktop, service-account, migration, credential-framework, custom OAuth-route, or shared-transport work
  • limits this version to delegated OAuth for public-cloud Dataverse environments

Validation

  • focused Dynamics/OAuth/executor suite at exact head: 340 passed
  • exact-head CI: 25,512 passed / 41 skipped; build, lint/test, CodeQL, Greptile, Cursor Bugbot, Vercel, companion, and GitGuardian are green
  • local full repository bun run test: Sim reported 25,507 passed / 46 skipped; setup and all other package suites also passed
  • type-check, lint, all 26 audits, API/client/request boundaries, canvas, metadata, catalog, migrations, and git diff --check passed
  • lifecycle action contracts are statically matched to Microsoft documentation; live mutations remain UNVERIFIED because no authorized disposable sandbox was available
  • nonempty callback scope sets that contain no resource-qualified scope remain an intentional compatibility risk pending sanitized live callback evidence

Merge prerequisite

Do not merge until #6716 lands and this branch is rebased onto that platform fix.