microsoft-agent 2.3.3__tar.gz → 2.3.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/MANIFEST.in +0 -1
  2. {microsoft_agent-2.3.3/microsoft_agent.egg-info → microsoft_agent-2.3.5}/PKG-INFO +4 -6
  3. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/README.md +1 -3
  4. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/_version.py +1 -1
  5. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/api/api_client_other.py +6 -1
  6. microsoft_agent-2.3.5/microsoft_agent/connector_sources.py +83 -0
  7. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/graph_file_service.py +17 -44
  8. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/integration_tools.py +9 -3
  9. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/ontology/certification.json +0 -3
  10. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/ontology/microsoft.ttl +7 -11
  11. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/power_platform.py +19 -2
  12. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/prompts/collaboration_specialist.json +0 -2
  13. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/universal_print.py +18 -47
  14. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5/microsoft_agent.egg-info}/PKG-INFO +4 -6
  15. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent.egg-info/SOURCES.txt +3 -5
  16. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent.egg-info/entry_points.txt +3 -0
  17. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent.egg-info/requires.txt +2 -2
  18. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/pyproject.toml +6 -2
  19. microsoft_agent-2.3.5/tests/test_default_content_surfaces.py +43 -0
  20. microsoft_agent-2.3.5/tests/test_sdk_centralization.py +95 -0
  21. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_transport_migration.py +10 -2
  22. microsoft_agent-2.3.3/.env.example +0 -100
  23. microsoft_agent-2.3.3/connector_manifest.yml +0 -180
  24. microsoft_agent-2.3.3/microsoft_agent/connectors/mcp_source_presets.json +0 -39
  25. microsoft_agent-2.3.3/microsoft_agent/connectors/tool_schema_fingerprints.json +0 -8
  26. microsoft_agent-2.3.3/mkdocs.yml +0 -90
  27. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/LICENSE +0 -0
  28. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/control-plane/README.md +0 -0
  29. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/control-plane/control-plane.sample.json +0 -0
  30. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/control-plane/nginx/windows-control-plane.conf +0 -0
  31. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/control-plane/systemd/microsoft-windows-control-plane.env +0 -0
  32. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/control-plane/systemd/microsoft-windows-control-plane.service +0 -0
  33. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/entra/New-MicrosoftAgentApp.ps1 +0 -0
  34. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/entra/New-WindowsControlPlaneEntraResources.ps1 +0 -0
  35. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/entra/README.md +0 -0
  36. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/entra/permission-profiles.json +0 -0
  37. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/integrations.example.json +0 -0
  38. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/windows/Install-WindowsCompanion.ps1 +0 -0
  39. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/windows/README.md +0 -0
  40. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/windows/Run-WindowsCompanion.ps1 +0 -0
  41. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/windows/Test-WindowsCompanionDeployment.ps1 +0 -0
  42. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/windows/Uninstall-WindowsCompanion.ps1 +0 -0
  43. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/deployment/windows/windows-companion.sample.json +0 -0
  44. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/docs/authentication.md +0 -0
  45. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/docs/concepts.md +0 -0
  46. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/docs/configuration.md +0 -0
  47. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/docs/deployment.md +0 -0
  48. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/docs/enrollment-checklist.md +0 -0
  49. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/docs/index.md +0 -0
  50. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/docs/installation.md +0 -0
  51. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/docs/integrations.md +0 -0
  52. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/docs/office-addin.md +0 -0
  53. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/docs/overview.md +0 -0
  54. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/docs/usage.md +0 -0
  55. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/docs/windows-companion.md +0 -0
  56. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/__init__.py +0 -0
  57. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/__main__.py +0 -0
  58. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/api/__init__.py +0 -0
  59. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/api/_graph_models.py +0 -0
  60. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/api/api_client_admin.py +0 -0
  61. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/api/api_client_apps.py +0 -0
  62. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/api/api_client_base.py +0 -0
  63. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/api/api_client_calendar.py +0 -0
  64. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/api/api_client_directory.py +0 -0
  65. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/api/api_client_drive.py +0 -0
  66. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/api/api_client_mail.py +0 -0
  67. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/api/api_client_system.py +0 -0
  68. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/api_client.py +0 -0
  69. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/auth.py +0 -0
  70. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/config_cli.py +0 -0
  71. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/connectors/__init__.py +0 -0
  72. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/credential_adapter.py +0 -0
  73. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/document_service.py +0 -0
  74. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/integration_adapters.py +0 -0
  75. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/integration_auth.py +0 -0
  76. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/integration_config.py +0 -0
  77. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/intune_service.py +0 -0
  78. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/kg_ingest.py +0 -0
  79. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/__init__.py +0 -0
  80. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_admin.py +0 -0
  81. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_agreements.py +0 -0
  82. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_applications.py +0 -0
  83. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_audit.py +0 -0
  84. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_auth.py +0 -0
  85. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_calendar.py +0 -0
  86. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_chat.py +0 -0
  87. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_communications.py +0 -0
  88. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_connections.py +0 -0
  89. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_contacts.py +0 -0
  90. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_devices.py +0 -0
  91. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_directory.py +0 -0
  92. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_domains.py +0 -0
  93. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_education.py +0 -0
  94. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_employee_experience.py +0 -0
  95. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_files.py +0 -0
  96. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_groups.py +0 -0
  97. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_identity.py +0 -0
  98. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_mail.py +0 -0
  99. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_meta.py +0 -0
  100. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_notes.py +0 -0
  101. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_organization.py +0 -0
  102. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_places.py +0 -0
  103. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_policies.py +0 -0
  104. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_print.py +0 -0
  105. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_privacy.py +0 -0
  106. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_reports.py +0 -0
  107. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_search.py +0 -0
  108. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_security.py +0 -0
  109. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_sites.py +0 -0
  110. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_solutions.py +0 -0
  111. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_storage.py +0 -0
  112. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_subscriptions.py +0 -0
  113. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_tasks.py +0 -0
  114. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_teams.py +0 -0
  115. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp/mcp_user.py +0 -0
  116. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp_config.json +0 -0
  117. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/mcp_server.py +0 -0
  118. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/office_bridge.py +0 -0
  119. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/ontology/__init__.py +0 -0
  120. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/ontology/fixtures/records.json +0 -0
  121. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/ontology/mappings/source.yaml +0 -0
  122. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/ontology/migrations/manifest.json +0 -0
  123. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/ontology/shapes/connector.shacl.ttl +0 -0
  124. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/prompts/__init__.py +0 -0
  125. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/settings.py +0 -0
  126. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/skills/__init__.py +0 -0
  127. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/skills/microsoft-agent-operations/SKILL.md +0 -0
  128. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/skills/microsoft-agent-operations/agents/openai.yaml +0 -0
  129. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/skills/microsoft-agent-operations/references/catalog.md +0 -0
  130. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/skills/microsoft-calendar-scheduling/SKILL.md +0 -0
  131. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/skills/microsoft-mail-operations/SKILL.md +0 -0
  132. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/skills/microsoft-teams-messaging/SKILL.md +0 -0
  133. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/tool_policy.py +0 -0
  134. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/windows_companion.py +0 -0
  135. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/windows_companion_service.py +0 -0
  136. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/windows_control_plane.py +0 -0
  137. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/windows_control_plane_service.py +0 -0
  138. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent/windows_runtime.py +0 -0
  139. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent.egg-info/dependency_links.txt +0 -0
  140. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/microsoft_agent.egg-info/top_level.txt +0 -0
  141. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/README.md +0 -0
  142. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/manifest.xml +0 -0
  143. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/package-lock.json +0 -0
  144. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/package.json +0 -0
  145. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/public/assets/icon.png.b64 +0 -0
  146. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/public/assets/icon.svg +0 -0
  147. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/public/config.json +0 -0
  148. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/public/styles.css +0 -0
  149. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/public/taskpane.html +0 -0
  150. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/scripts/validate_manifest.py +0 -0
  151. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/src/backend-client.ts +0 -0
  152. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/src/office-bridge.ts +0 -0
  153. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/src/office-operations.ts +0 -0
  154. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/src/taskpane.ts +0 -0
  155. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/src/validation.ts +0 -0
  156. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/tests/backend-client.test.ts +0 -0
  157. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/tests/office-bridge.test.ts +0 -0
  158. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/tests/validation.test.ts +0 -0
  159. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/tsconfig.json +0 -0
  160. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/vitest.config.ts +0 -0
  161. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/office_addin/webpack.config.cjs +0 -0
  162. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/setup.cfg +0 -0
  163. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_api_client_extended.py +0 -0
  164. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_auth.py +0 -0
  165. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_auth_coverage.py +0 -0
  166. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_bug_cx_046_ctx_info_awaited.py +0 -0
  167. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_config_cli.py +0 -0
  168. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_credential_adapter.py +0 -0
  169. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_document_service.py +0 -0
  170. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_generate_code.py +0 -0
  171. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_graph_file_service.py +0 -0
  172. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_graph_reliability.py +0 -0
  173. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_graph_transport.py +0 -0
  174. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_init_dynamics.py +0 -0
  175. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_integration_adapters.py +0 -0
  176. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_integration_auth.py +0 -0
  177. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_integration_config_and_tools.py +0 -0
  178. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_intune_service.py +0 -0
  179. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_kg_ingest.py +0 -0
  180. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_main.py +0 -0
  181. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_mcp_comprehensive.py +0 -0
  182. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_mcp_server.py +0 -0
  183. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_office_bridge.py +0 -0
  184. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_office_manifest.py +0 -0
  185. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_onenote_sharepoint_print.py +0 -0
  186. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_placeholder.py +0 -0
  187. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_power_platform.py +0 -0
  188. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_settings_and_policy.py +0 -0
  189. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_startup.py +0 -0
  190. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_teams_reliability.py +0 -0
  191. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_transport_tls.py +0 -0
  192. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_verify_api_integration.py +0 -0
  193. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_windows_companion.py +0 -0
  194. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_windows_control_plane.py +0 -0
  195. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_windows_control_plane_service.py +0 -0
  196. {microsoft_agent-2.3.3 → microsoft_agent-2.3.5}/tests/test_windows_runtime.py +0 -0
@@ -1,5 +1,4 @@
1
1
  include README.md LICENSE
2
- include .env.example connector_manifest.yml mkdocs.yml
3
2
  recursive-include microsoft_agent *.py *.json *.md *.ttl *.yaml
4
3
  recursive-include docs *.md
5
4
  recursive-include deployment *.json *.md *.ps1 *.conf *.service *.env
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: microsoft-agent
3
- Version: 2.3.3
3
+ Version: 2.3.5
4
4
  Summary: Governed Microsoft Graph agent and MCP server
5
5
  Author-email: Project Maintainers <maintainers@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -11,7 +11,7 @@ Classifier: Programming Language :: Python :: 3
11
11
  Requires-Python: >=3.12
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.6
14
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1
15
15
  Requires-Dist: azure-core>=1.41.0
16
16
  Requires-Dist: httpx>=0.28.1
17
17
  Requires-Dist: keyring>=25.7.0
@@ -19,7 +19,7 @@ Requires-Dist: msal>=1.39.0
19
19
  Requires-Dist: msgraph-sdk>=1.64.0
20
20
  Requires-Dist: pydantic>=2.14.1
21
21
  Provides-Extra: mcp
22
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.6; extra == "mcp"
22
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1; extra == "mcp"
23
23
  Provides-Extra: documents
24
24
  Requires-Dist: python-docx>=1.2.0; extra == "documents"
25
25
  Requires-Dist: python-pptx>=1.0.2; extra == "documents"
@@ -71,7 +71,7 @@ Dynamic: license-file
71
71
  agent. It uses Agent Connector SDK for MCP, identity propagation, intent delegation,
72
72
  configuration, telemetry, and graph integration.
73
73
 
74
- Current package version: **2.3.3**
74
+ Current package version: **2.3.5**
75
75
 
76
76
  ## Capabilities
77
77
 
@@ -890,8 +890,6 @@ _Auto-generated from the code-read env surface (`MCP_TOOL_MODE` + package vars)
890
890
 
891
891
  The provider contributes:
892
892
 
893
- - `microsoft_agent/connectors/mcp_source_presets.json`
894
- - `connector_manifest.yml`
895
893
  - `microsoft_agent/ontology/microsoft.ttl`
896
894
  - SHACL, mapping, fixture, migration, schema-fingerprint, and certification assets
897
895
 
@@ -3,7 +3,7 @@
3
3
  agent. It uses Agent Connector SDK for MCP, identity propagation, intent delegation,
4
4
  configuration, telemetry, and graph integration.
5
5
 
6
- Current package version: **2.3.3**
6
+ Current package version: **2.3.5**
7
7
 
8
8
  ## Capabilities
9
9
 
@@ -822,8 +822,6 @@ _Auto-generated from the code-read env surface (`MCP_TOOL_MODE` + package vars)
822
822
 
823
823
  The provider contributes:
824
824
 
825
- - `microsoft_agent/connectors/mcp_source_presets.json`
826
- - `connector_manifest.yml`
827
825
  - `microsoft_agent/ontology/microsoft.ttl`
828
826
  - SHACL, mapping, fixture, migration, schema-fingerprint, and certification assets
829
827
 
@@ -1,3 +1,3 @@
1
1
  """Single package version authority."""
2
2
 
3
- __version__ = "2.3.3"
3
+ __version__ = "2.3.5"
@@ -2032,8 +2032,12 @@ class MicrosoftGraphApiOther(MicrosoftGraphApiBase):
2032
2032
  upload_transport: AsyncHttpTransport | None = None,
2033
2033
  ) -> dict[str, Any]:
2034
2034
  """Create, upload, and start one print job without exposing its upload URL."""
2035
- from microsoft_agent.power_platform import HttpxAsyncHttpTransport
2035
+ from microsoft_agent.power_platform import (
2036
+ HttpxAsyncHttpTransport,
2037
+ upload_retry_policy,
2038
+ )
2036
2039
  from microsoft_agent.universal_print import (
2040
+ PRINT_UPLOAD_MAX_RETRIES,
2037
2041
  PrintDocumentSubmission,
2038
2042
  UniversalPrintUploader,
2039
2043
  validate_print_upload_url,
@@ -2088,6 +2092,7 @@ class MicrosoftGraphApiOther(MicrosoftGraphApiBase):
2088
2092
  service="microsoft_graph",
2089
2093
  tls_profile=self.auth_manager.graph_tls_profile,
2090
2094
  tls_profile_ref=self.auth_manager.graph_tls_profile_ref,
2095
+ retry=upload_retry_policy(PRINT_UPLOAD_MAX_RETRIES),
2091
2096
  )
2092
2097
  transport = owned_transport
2093
2098
  uploader = UniversalPrintUploader(transport)
@@ -0,0 +1,83 @@
1
+ """Data sources of this connector, declared by tool name (generated by connector-ontology-map migrate).
2
+
3
+ Served live as ``connector://resources``. Regenerate by editing the declarations, not the tools.
4
+ """
5
+
6
+ # ruff: noqa: E501
7
+ from __future__ import annotations
8
+
9
+ from agent_connector_sdk.ingest.live_declaration import source_meta
10
+ from agent_connector_sdk.ingest.sources import IngestSourceDeclaration, IngestSourceSpec
11
+
12
+ CONNECTOR = "microsoft-mcp"
13
+
14
+ SOURCES = (
15
+ source_meta(
16
+ tool="list_microsoft_ingestion_projection",
17
+ source_id="microsoft-user-structure",
18
+ record_type="microsoft-person-reference",
19
+ id_field="id",
20
+ preset={
21
+ "doc_type": "microsoft-person-reference",
22
+ "params": {
23
+ "kind": "users",
24
+ "params_json": '{"$top":100}',
25
+ },
26
+ "params_style": "args",
27
+ },
28
+ records_path="records",
29
+ server="microsoft-mcp",
30
+ ),
31
+ )
32
+
33
+ SCHEMA_MAPPINGS = {
34
+ "Event": {
35
+ "fields": {},
36
+ "ontology_class": "Event",
37
+ },
38
+ "File": {
39
+ "fields": {},
40
+ "ontology_class": "File",
41
+ },
42
+ "Message": {
43
+ "fields": {},
44
+ "ontology_class": None,
45
+ },
46
+ }
47
+
48
+ RESOURCES = (
49
+ {
50
+ "id_prefix": "event",
51
+ "label": "Opaque Microsoft event reference",
52
+ "name": "Event",
53
+ },
54
+ {
55
+ "id_prefix": "file",
56
+ "label": "Opaque Microsoft file reference",
57
+ "name": "File",
58
+ },
59
+ {
60
+ "id_prefix": "message",
61
+ "label": "Opaque Microsoft message reference",
62
+ "name": "Message",
63
+ },
64
+ )
65
+
66
+
67
+ def declaration() -> IngestSourceDeclaration:
68
+ """The declaration the server assembles from this module."""
69
+ specs = []
70
+ for item in SOURCES:
71
+ for entry in item["connector_sources"]:
72
+ body = {k: v for k, v in entry.items() if k not in ("tool", "mapping")}
73
+ specs.append(
74
+ IngestSourceSpec.model_validate({**body, "tools": (entry["tool"],)})
75
+ )
76
+ return IngestSourceDeclaration.model_validate(
77
+ {
78
+ "connector": CONNECTOR,
79
+ "sources": specs,
80
+ "schema_mappings": SCHEMA_MAPPINGS,
81
+ "resources": RESOURCES,
82
+ }
83
+ )
@@ -7,7 +7,6 @@ that are multiples of 320 KiB, as required by Graph.
7
7
 
8
8
  from __future__ import annotations
9
9
 
10
- import asyncio
11
10
  import json
12
11
  import re
13
12
  from collections.abc import Mapping
@@ -261,32 +260,23 @@ class GraphFileService:
261
260
  "Content-Range": f"bytes {start}-{end}/{total}",
262
261
  }
263
262
  # The preauthenticated upload URL must not receive the Graph bearer token.
264
- for attempt in range(self.settings.max_retries + 1):
265
- try:
266
- response = await self._transport.request(
267
- "PUT",
268
- upload_url,
269
- headers=headers,
270
- body=fragment,
271
- timeout=self.settings.timeout_seconds,
272
- )
273
- except (OSError, TimeoutError) as exc:
274
- if attempt >= self.settings.max_retries:
275
- raise GraphFileServiceError("Upload transport failed.") from exc
276
- await asyncio.sleep(min(2**attempt, 8))
277
- continue
278
- if response.status_code in {200, 201, 202}:
279
- return response
280
- if (
281
- response.status_code not in {429, 500, 502, 503, 504}
282
- or attempt >= self.settings.max_retries
283
- ):
284
- raise GraphFileServiceError(
285
- "Microsoft Graph rejected an upload fragment.",
286
- status_code=response.status_code,
287
- )
288
- await asyncio.sleep(_retry_delay(response, attempt))
289
- raise GraphFileServiceError("Upload fragment retry limit was exceeded.")
263
+ # The transport's SDK retry policy owns backoff and Retry-After handling.
264
+ try:
265
+ response = await self._transport.request(
266
+ "PUT",
267
+ upload_url,
268
+ headers=headers,
269
+ body=fragment,
270
+ timeout=self.settings.timeout_seconds,
271
+ )
272
+ except (OSError, TimeoutError) as exc:
273
+ raise GraphFileServiceError("Upload transport failed.") from exc
274
+ if response.status_code in {200, 201, 202}:
275
+ return response
276
+ raise GraphFileServiceError(
277
+ "Microsoft Graph rejected an upload fragment.",
278
+ status_code=response.status_code,
279
+ )
290
280
 
291
281
  async def _graph_request(
292
282
  self,
@@ -397,20 +387,3 @@ def _range_start(value: Any) -> int:
397
387
  if not isinstance(value, str) or not re.fullmatch(r"\d+-\d*", value):
398
388
  raise GraphFileServiceError("Graph returned an invalid expected range.")
399
389
  return int(value.partition("-")[0])
400
-
401
-
402
- def _retry_delay(response: HttpResponse, attempt: int) -> float:
403
- raw = next(
404
- (
405
- value
406
- for key, value in response.headers.items()
407
- if key.lower() == "retry-after"
408
- ),
409
- None,
410
- )
411
- try:
412
- return (
413
- min(max(float(raw), 0.0), 30.0) if raw is not None else min(2**attempt, 8)
414
- )
415
- except ValueError:
416
- return min(2**attempt, 8)
@@ -3,10 +3,11 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from functools import lru_cache
6
- from typing import Any, TypeVar
6
+ from typing import Any, TypeAlias, TypeVar
7
7
  from urllib.parse import urlparse
8
8
  from uuid import UUID
9
9
 
10
+ from agent_connector_sdk.http.retry import RetryPolicy
10
11
  from fastmcp import FastMCP
11
12
  from pydantic import Field
12
13
 
@@ -41,6 +42,7 @@ from microsoft_agent.power_platform import (
41
42
  FlowState,
42
43
  HttpxAsyncHttpTransport,
43
44
  PowerPlatformClient,
45
+ upload_retry_policy,
44
46
  )
45
47
  from microsoft_agent.settings import get_settings
46
48
  from microsoft_agent.windows_companion import (
@@ -52,7 +54,7 @@ from microsoft_agent.windows_companion import (
52
54
  WindowsCompanionClient,
53
55
  )
54
56
 
55
- _ManagedTransport = HttpxAsyncHttpTransport | HttpxCompanionTransport
57
+ _ManagedTransport: TypeAlias = HttpxAsyncHttpTransport | HttpxCompanionTransport
56
58
  _ManagedTransportT = TypeVar("_ManagedTransportT", bound=_ManagedTransport)
57
59
  _managed_transports: list[_ManagedTransport] = []
58
60
 
@@ -95,6 +97,7 @@ def _http_transport(
95
97
  tls_profile: str | None = None,
96
98
  tls_profile_ref: str | None = None,
97
99
  allowed_private_hosts: tuple[str, ...] = (),
100
+ retry: RetryPolicy | None = None,
98
101
  ) -> HttpxAsyncHttpTransport:
99
102
  return _manage_transport(
100
103
  HttpxAsyncHttpTransport(
@@ -102,6 +105,7 @@ def _http_transport(
102
105
  tls_profile=tls_profile,
103
106
  tls_profile_ref=tls_profile_ref,
104
107
  allowed_private_hosts=allowed_private_hosts,
108
+ retry=retry,
105
109
  )
106
110
  )
107
111
 
@@ -125,13 +129,15 @@ def _companion_transport(
125
129
  def _graph_file_service() -> GraphFileService:
126
130
  settings = get_settings()
127
131
  provider = MicrosoftAudienceTokenProvider([GRAPH_AUDIENCE])
132
+ file_settings = GraphFileSettings(graph_base_url=settings.graph_base_url)
128
133
  return GraphFileService(
129
- GraphFileSettings(graph_base_url=settings.graph_base_url),
134
+ file_settings,
130
135
  provider,
131
136
  _http_transport(
132
137
  service="microsoft_graph",
133
138
  tls_profile=settings.graph_tls_profile,
134
139
  tls_profile_ref=settings.graph_tls_profile_ref,
140
+ retry=upload_retry_policy(file_settings.max_retries),
135
141
  ),
136
142
  )
137
143
 
@@ -1,9 +1,6 @@
1
1
  {
2
2
  "api_version": "arbora.io/v1",
3
3
  "artifacts": {
4
- "connector_manifest.yml": "94e1b83cc0204930640440603a90a619a22c6bcc8651aa41967d5b820b535a3a",
5
- "microsoft_agent/connectors/mcp_source_presets.json": "62d90f36250ff984665e62862566d0b2be2ffca69b35ebc394a1a5bce074cc32",
6
- "microsoft_agent/connectors/tool_schema_fingerprints.json": "8e0f365e0b660836d7f331174b812d382ba30a9f3be65a621d07bf030086dd64",
7
4
  "microsoft_agent/ontology/fixtures/records.json": "b29cde0f53b0625dc50c3941d745092f2712044bfd31b9565301c6a314f60adc",
8
5
  "microsoft_agent/ontology/mappings/source.yaml": "c9834a4cec0b3d9eea10f40e26ea647d848b08174d9fd34ab2e468db52a90497",
9
6
  "microsoft_agent/ontology/microsoft.ttl": "b2c0937318954ef2c5d2a01ad14c097581885cf5670e94de99e90c9143351b00",
@@ -6,17 +6,14 @@
6
6
  # identifiers. Provider identifiers, names, addresses, content, filenames, URLs,
7
7
  # timestamps, and attachment bytes are not properties in this ontology.
8
8
 
9
- :Message a owl:Class ;
10
- rdfs:label "Opaque Microsoft message reference" ;
11
- rdfs:comment "A content-free keyed reference to an Outlook or Teams message." .
9
+ :Message a owl:Class .
12
10
 
13
- :Event a owl:Class ;
14
- rdfs:label "Opaque Microsoft event reference" ;
15
- rdfs:comment "A content-free keyed reference to a calendar event or meeting." .
16
11
 
17
- :File a owl:Class ;
18
- rdfs:label "Opaque Microsoft file reference" ;
19
- rdfs:comment "A content-free keyed reference to a OneDrive or SharePoint item." .
12
+ :Event a owl:Class .
13
+
14
+
15
+ :File a owl:Class .
16
+
20
17
 
21
18
  :sentBy a owl:ObjectProperty ;
22
19
  rdfs:label "sent by" ;
@@ -45,5 +42,4 @@
45
42
 
46
43
  <http://knuckles.team/kg/microsoft> a owl:Ontology ;
47
44
  rdfs:label "Microsoft Graph zero-PII structural ontology" ;
48
- rdfs:comment "Keyed opaque message, event, file, and person relationships for governed Microsoft Graph ingestion." ;
49
- owl:imports <http://knuckles.team/kg> .
45
+ rdfs:comment "Keyed opaque message, event, file, and person relationships for governed Microsoft Graph ingestion." .
@@ -30,7 +30,7 @@ from agent_connector_sdk.credentials.runtime_references import (
30
30
  )
31
31
  from agent_connector_sdk.http.client import create_http_client
32
32
  from agent_connector_sdk.http.options import HttpClientOptions
33
- from agent_connector_sdk.http.retry import RetryPolicy
33
+ from agent_connector_sdk.http.retry import RETRYABLE_STATUSES, RetryPolicy
34
34
  from agent_connector_sdk.tls.profile import ResolvedTLSProfile
35
35
  from agent_connector_sdk.tls.resolve import resolve_tls_profile
36
36
  from pydantic import (
@@ -112,6 +112,22 @@ class AudienceTokenProvider(Protocol):
112
112
  """Return a bearer token whose ``aud`` claim matches ``audience``."""
113
113
 
114
114
 
115
+ #: Statuses an upload fragment retries; the SDK client applies them to PUT.
116
+ UPLOAD_RETRY_STATUSES = RETRYABLE_STATUSES | {500}
117
+
118
+
119
+ def upload_retry_policy(max_retries: int) -> RetryPolicy:
120
+ """SDK retry policy for resumable upload fragments (``max_retries`` retries)."""
121
+
122
+ return RetryPolicy(
123
+ max_attempts=max_retries + 1,
124
+ backoff_base=1.0,
125
+ max_backoff=8.0,
126
+ max_retry_after=30.0,
127
+ retry_statuses=UPLOAD_RETRY_STATUSES,
128
+ )
129
+
130
+
115
131
  class HttpxAsyncHttpTransport:
116
132
  """Bounded async facade over the shared verified sync HTTP boundary."""
117
133
 
@@ -124,6 +140,7 @@ class HttpxAsyncHttpTransport:
124
140
  allowed_private_hosts: tuple[str, ...] = (),
125
141
  max_response_bytes: int = 16 * 1024 * 1024,
126
142
  client: httpx.Client | None = None,
143
+ retry: RetryPolicy | None = None,
127
144
  ) -> None:
128
145
  if not 1_024 <= max_response_bytes <= 64 * 1024 * 1024:
129
146
  raise ValueError("HTTP response bound is invalid")
@@ -149,7 +166,7 @@ class HttpxAsyncHttpTransport:
149
166
  # Requests carry absolute URLs; the base is never dialed.
150
167
  base_url="https://pinned.invalid",
151
168
  timeout=httpx.Timeout(30.0),
152
- retry=RetryPolicy(max_attempts=1),
169
+ retry=retry or RetryPolicy(max_attempts=1),
153
170
  tls=self._tls,
154
171
  limits=httpx.Limits(
155
172
  max_connections=32,
@@ -4,8 +4,6 @@
4
4
  "task": "microsoft_collaboration_specialist",
5
5
  "type": "prompt",
6
6
  "source": "microsoft-agent",
7
- "extends": "agent-connector-sdk:base",
8
- "compose": "append",
9
7
  "description": "Governed Microsoft Graph operations through the current Microsoft Agent MCP provider.",
10
8
  "metadata": {
11
9
  "topic": "Microsoft Graph operations",
@@ -8,7 +8,6 @@ Print upload origin and sends bounded sequential byte ranges.
8
8
 
9
9
  from __future__ import annotations
10
10
 
11
- import asyncio
12
11
  import base64
13
12
  import binascii
14
13
  import json
@@ -96,6 +95,10 @@ class PrintDocumentSubmission(BaseModel):
96
95
  return content
97
96
 
98
97
 
98
+ #: Retries the print upload transport applies to a failed range.
99
+ PRINT_UPLOAD_MAX_RETRIES = 3
100
+
101
+
99
102
  class UniversalPrintUploadError(RuntimeError):
100
103
  """Safe upload failure that never contains the preauthenticated URL."""
101
104
 
@@ -113,7 +116,6 @@ class UniversalPrintUploader:
113
116
  *,
114
117
  timeout_seconds: float = 60,
115
118
  chunk_bytes: int = PRINT_UPLOAD_CHUNK_BYTES,
116
- max_retries: int = 3,
117
119
  ) -> None:
118
120
  if not 0 < chunk_bytes < 10 * 1024 * 1024:
119
121
  raise ValueError("Universal Print chunks must be smaller than 10 MiB")
@@ -121,12 +123,9 @@ class UniversalPrintUploader:
121
123
  raise ValueError("Universal Print chunks must be multiples of 320 KiB")
122
124
  if not 0 < timeout_seconds <= 600:
123
125
  raise ValueError("timeout_seconds must be between 0 and 600")
124
- if not 0 <= max_retries <= 8:
125
- raise ValueError("max_retries must be between 0 and 8")
126
126
  self._transport = transport
127
127
  self.timeout_seconds = timeout_seconds
128
128
  self.chunk_bytes = chunk_bytes
129
- self.max_retries = max_retries
130
129
 
131
130
  async def upload(self, upload_url: str, content: bytes) -> dict[str, Any]:
132
131
  """Upload sequential ranges and return final printDocument metadata."""
@@ -192,31 +191,19 @@ class UniversalPrintUploader:
192
191
  "Content-Length": str(len(fragment)),
193
192
  "Content-Range": f"bytes {start}-{end}/{total}",
194
193
  }
195
- for attempt in range(self.max_retries + 1):
196
- try:
197
- response = await self._transport.request(
198
- "PUT",
199
- upload_url,
200
- headers=headers,
201
- body=fragment,
202
- timeout=self.timeout_seconds,
203
- )
204
- except (OSError, TimeoutError) as exc:
205
- if attempt >= self.max_retries:
206
- raise UniversalPrintUploadError(
207
- "Universal Print upload transport failed."
208
- ) from exc
209
- await asyncio.sleep(min(2**attempt, 8))
210
- continue
211
- if response.status_code in {201, 202}:
212
- return response
213
- if (
214
- response.status_code not in {429, 500, 502, 503, 504}
215
- or attempt >= self.max_retries
216
- ):
217
- return response
218
- await asyncio.sleep(_retry_delay(response, attempt))
219
- raise UniversalPrintUploadError("Universal Print retry limit was exceeded.")
194
+ # The transport's SDK retry policy owns backoff and Retry-After handling.
195
+ try:
196
+ return await self._transport.request(
197
+ "PUT",
198
+ upload_url,
199
+ headers=headers,
200
+ body=fragment,
201
+ timeout=self.timeout_seconds,
202
+ )
203
+ except (OSError, TimeoutError) as exc:
204
+ raise UniversalPrintUploadError(
205
+ "Universal Print upload transport failed."
206
+ ) from exc
220
207
 
221
208
 
222
209
  def validate_print_upload_url(value: Any) -> str:
@@ -269,24 +256,8 @@ def _range_start(value: Any) -> int:
269
256
  return int(value.partition("-")[0])
270
257
 
271
258
 
272
- def _retry_delay(response: HttpResponse, attempt: int) -> float:
273
- raw = next(
274
- (
275
- value
276
- for key, value in response.headers.items()
277
- if key.casefold() == "retry-after"
278
- ),
279
- None,
280
- )
281
- try:
282
- return (
283
- min(max(float(raw), 0.0), 30.0) if raw is not None else min(2**attempt, 8)
284
- )
285
- except ValueError:
286
- return min(2**attempt, 8)
287
-
288
-
289
259
  __all__ = [
260
+ "PRINT_UPLOAD_MAX_RETRIES",
290
261
  "MAX_PRINT_DOCUMENT_BYTES",
291
262
  "PRINT_UPLOAD_CHUNK_BYTES",
292
263
  "PRINT_UPLOAD_HOST",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: microsoft-agent
3
- Version: 2.3.3
3
+ Version: 2.3.5
4
4
  Summary: Governed Microsoft Graph agent and MCP server
5
5
  Author-email: Project Maintainers <maintainers@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -11,7 +11,7 @@ Classifier: Programming Language :: Python :: 3
11
11
  Requires-Python: >=3.12
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.6
14
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1
15
15
  Requires-Dist: azure-core>=1.41.0
16
16
  Requires-Dist: httpx>=0.28.1
17
17
  Requires-Dist: keyring>=25.7.0
@@ -19,7 +19,7 @@ Requires-Dist: msal>=1.39.0
19
19
  Requires-Dist: msgraph-sdk>=1.64.0
20
20
  Requires-Dist: pydantic>=2.14.1
21
21
  Provides-Extra: mcp
22
- Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.3.6; extra == "mcp"
22
+ Requires-Dist: agent-connector-sdk[mcp]<1.0.0,>=0.4.1; extra == "mcp"
23
23
  Provides-Extra: documents
24
24
  Requires-Dist: python-docx>=1.2.0; extra == "documents"
25
25
  Requires-Dist: python-pptx>=1.0.2; extra == "documents"
@@ -71,7 +71,7 @@ Dynamic: license-file
71
71
  agent. It uses Agent Connector SDK for MCP, identity propagation, intent delegation,
72
72
  configuration, telemetry, and graph integration.
73
73
 
74
- Current package version: **2.3.3**
74
+ Current package version: **2.3.5**
75
75
 
76
76
  ## Capabilities
77
77
 
@@ -890,8 +890,6 @@ _Auto-generated from the code-read env surface (`MCP_TOOL_MODE` + package vars)
890
890
 
891
891
  The provider contributes:
892
892
 
893
- - `microsoft_agent/connectors/mcp_source_presets.json`
894
- - `connector_manifest.yml`
895
893
  - `microsoft_agent/ontology/microsoft.ttl`
896
894
  - SHACL, mapping, fixture, migration, schema-fingerprint, and certification assets
897
895
 
@@ -1,9 +1,6 @@
1
- .env.example
2
1
  LICENSE
3
2
  MANIFEST.in
4
3
  README.md
5
- connector_manifest.yml
6
- mkdocs.yml
7
4
  pyproject.toml
8
5
  deployment/integrations.example.json
9
6
  deployment/control-plane/README.md
@@ -39,6 +36,7 @@ microsoft_agent/_version.py
39
36
  microsoft_agent/api_client.py
40
37
  microsoft_agent/auth.py
41
38
  microsoft_agent/config_cli.py
39
+ microsoft_agent/connector_sources.py
42
40
  microsoft_agent/credential_adapter.py
43
41
  microsoft_agent/document_service.py
44
42
  microsoft_agent/graph_file_service.py
@@ -78,8 +76,6 @@ microsoft_agent/api/api_client_mail.py
78
76
  microsoft_agent/api/api_client_other.py
79
77
  microsoft_agent/api/api_client_system.py
80
78
  microsoft_agent/connectors/__init__.py
81
- microsoft_agent/connectors/mcp_source_presets.json
82
- microsoft_agent/connectors/tool_schema_fingerprints.json
83
79
  microsoft_agent/mcp/__init__.py
84
80
  microsoft_agent/mcp/mcp_admin.py
85
81
  microsoft_agent/mcp/mcp_agreements.py
@@ -160,6 +156,7 @@ tests/test_auth_coverage.py
160
156
  tests/test_bug_cx_046_ctx_info_awaited.py
161
157
  tests/test_config_cli.py
162
158
  tests/test_credential_adapter.py
159
+ tests/test_default_content_surfaces.py
163
160
  tests/test_document_service.py
164
161
  tests/test_generate_code.py
165
162
  tests/test_graph_file_service.py
@@ -179,6 +176,7 @@ tests/test_office_manifest.py
179
176
  tests/test_onenote_sharepoint_print.py
180
177
  tests/test_placeholder.py
181
178
  tests/test_power_platform.py
179
+ tests/test_sdk_centralization.py
182
180
  tests/test_settings_and_policy.py
183
181
  tests/test_startup.py
184
182
  tests/test_teams_reliability.py
@@ -1,3 +1,6 @@
1
+ [agent_connector_sdk.connector]
2
+ microsoft-mcp = microsoft_agent
3
+
1
4
  [agent_connector_sdk.ontology_providers]
2
5
  microsoft-agent = microsoft_agent.ontology
3
6
 
@@ -1,4 +1,4 @@
1
- agent-connector-sdk[mcp]<1.0.0,>=0.3.6
1
+ agent-connector-sdk[mcp]<1.0.0,>=0.4.1
2
2
  azure-core>=1.41.0
3
3
  httpx>=0.28.1
4
4
  keyring>=25.7.0
@@ -40,7 +40,7 @@ python-docx>=1.2.0
40
40
  python-pptx>=1.0.2
41
41
 
42
42
  [mcp]
43
- agent-connector-sdk[mcp]<1.0.0,>=0.3.6
43
+ agent-connector-sdk[mcp]<1.0.0,>=0.4.1
44
44
 
45
45
  [test]
46
46
  cryptography>=50.0.2
@@ -14,7 +14,7 @@ classifiers = [
14
14
  "Operating System :: OS Independent",
15
15
  "Programming Language :: Python :: 3",
16
16
  ]
17
- dependencies = [ "agent-connector-sdk[mcp]>=0.3.6,<1.0.0", "azure-core>=1.41.0", "httpx>=0.28.1", "keyring>=25.7.0", "msal>=1.39.0", "msgraph-sdk>=1.64.0", "pydantic>=2.14.1",]
17
+ dependencies = [ "agent-connector-sdk[mcp]>=0.4.1,<1.0.0", "azure-core>=1.41.0", "httpx>=0.28.1", "keyring>=25.7.0", "msal>=1.39.0", "msgraph-sdk>=1.64.0", "pydantic>=2.14.1",]
18
18
  license = "MIT"
19
19
 
20
20
  [[project.authors]]
@@ -22,7 +22,7 @@ name = "Project Maintainers"
22
22
  email = "maintainers@users.noreply.github.com"
23
23
 
24
24
  [project.optional-dependencies]
25
- mcp = [ "agent-connector-sdk[mcp]>=0.3.6,<1.0.0",]
25
+ mcp = [ "agent-connector-sdk[mcp]>=0.4.1,<1.0.0",]
26
26
  documents = ["python-docx>=1.2.0", "python-pptx>=1.0.2"]
27
27
  cloud = ["azure-identity>=1.26.0", "httpx>=0.28.1"]
28
28
  windows = [
@@ -96,6 +96,10 @@ dev = [
96
96
  "ruff>=0.17.1,<1",
97
97
  ]
98
98
 
99
+ # The one declared connector identity: the fleet name (SDK-CONNECTOR-CONTROL-R071).
100
+ [project.entry-points."agent_connector_sdk.connector"]
101
+ microsoft-mcp = "microsoft_agent"
102
+
99
103
  [tool.uv.workspace]
100
104
  members = ["."]
101
105