microsoft-agent 2.3.5__tar.gz → 2.3.7__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 (197) hide show
  1. {microsoft_agent-2.3.5/microsoft_agent.egg-info → microsoft_agent-2.3.7}/PKG-INFO +5 -5
  2. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/README.md +1 -1
  3. microsoft_agent-2.3.7/microsoft_agent/__init__.py +24 -0
  4. microsoft_agent-2.3.7/microsoft_agent/_version.py +5 -0
  5. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/connector_sources.py +6 -24
  6. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp_server.py +8 -0
  7. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/ontology/certification.json +4 -4
  8. microsoft_agent-2.3.7/microsoft_agent/skills/microsoft-agent-development/SKILL.md +102 -0
  9. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/tool_policy.py +3 -0
  10. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7/microsoft_agent.egg-info}/PKG-INFO +5 -5
  11. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/SOURCES.txt +2 -1
  12. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/entry_points.txt +1 -10
  13. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/requires.txt +2 -2
  14. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/pyproject.toml +11 -19
  15. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_default_content_surfaces.py +10 -7
  16. microsoft_agent-2.3.7/tests/test_main.py +0 -0
  17. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_mcp_comprehensive.py +1 -1
  18. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_onenote_sharepoint_print.py +4 -1
  19. microsoft_agent-2.3.7/tests/test_publication_workflow.py +78 -0
  20. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_settings_and_policy.py +10 -0
  21. microsoft_agent-2.3.7/tests/test_startup.py +0 -0
  22. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_transport_migration.py +1 -3
  23. microsoft_agent-2.3.5/microsoft_agent/__init__.py +0 -8
  24. microsoft_agent-2.3.5/microsoft_agent/_version.py +0 -3
  25. microsoft_agent-2.3.5/tests/test_main.py +0 -6
  26. microsoft_agent-2.3.5/tests/test_startup.py +0 -3
  27. microsoft_agent-2.3.5/tests/test_verify_api_integration.py +0 -90
  28. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/LICENSE +0 -0
  29. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/MANIFEST.in +0 -0
  30. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/control-plane/README.md +0 -0
  31. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/control-plane/control-plane.sample.json +0 -0
  32. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/control-plane/nginx/windows-control-plane.conf +0 -0
  33. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/control-plane/systemd/microsoft-windows-control-plane.env +0 -0
  34. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/control-plane/systemd/microsoft-windows-control-plane.service +0 -0
  35. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/entra/New-MicrosoftAgentApp.ps1 +0 -0
  36. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/entra/New-WindowsControlPlaneEntraResources.ps1 +0 -0
  37. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/entra/README.md +0 -0
  38. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/entra/permission-profiles.json +0 -0
  39. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/integrations.example.json +0 -0
  40. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/windows/Install-WindowsCompanion.ps1 +0 -0
  41. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/windows/README.md +0 -0
  42. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/windows/Run-WindowsCompanion.ps1 +0 -0
  43. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/windows/Test-WindowsCompanionDeployment.ps1 +0 -0
  44. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/windows/Uninstall-WindowsCompanion.ps1 +0 -0
  45. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/deployment/windows/windows-companion.sample.json +0 -0
  46. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/docs/authentication.md +0 -0
  47. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/docs/concepts.md +0 -0
  48. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/docs/configuration.md +0 -0
  49. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/docs/deployment.md +0 -0
  50. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/docs/enrollment-checklist.md +0 -0
  51. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/docs/index.md +0 -0
  52. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/docs/installation.md +0 -0
  53. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/docs/integrations.md +0 -0
  54. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/docs/office-addin.md +0 -0
  55. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/docs/overview.md +0 -0
  56. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/docs/usage.md +0 -0
  57. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/docs/windows-companion.md +0 -0
  58. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/__main__.py +0 -0
  59. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/api/__init__.py +0 -0
  60. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/api/_graph_models.py +0 -0
  61. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_admin.py +0 -0
  62. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_apps.py +0 -0
  63. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_base.py +0 -0
  64. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_calendar.py +0 -0
  65. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_directory.py +0 -0
  66. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_drive.py +0 -0
  67. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_mail.py +0 -0
  68. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_other.py +0 -0
  69. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_system.py +0 -0
  70. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/api_client.py +0 -0
  71. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/auth.py +0 -0
  72. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/config_cli.py +0 -0
  73. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/connectors/__init__.py +0 -0
  74. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/credential_adapter.py +0 -0
  75. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/document_service.py +0 -0
  76. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/graph_file_service.py +0 -0
  77. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/integration_adapters.py +0 -0
  78. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/integration_auth.py +0 -0
  79. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/integration_config.py +0 -0
  80. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/integration_tools.py +0 -0
  81. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/intune_service.py +0 -0
  82. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/kg_ingest.py +0 -0
  83. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/__init__.py +0 -0
  84. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_admin.py +0 -0
  85. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_agreements.py +0 -0
  86. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_applications.py +0 -0
  87. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_audit.py +0 -0
  88. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_auth.py +0 -0
  89. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_calendar.py +0 -0
  90. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_chat.py +0 -0
  91. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_communications.py +0 -0
  92. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_connections.py +0 -0
  93. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_contacts.py +0 -0
  94. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_devices.py +0 -0
  95. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_directory.py +0 -0
  96. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_domains.py +0 -0
  97. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_education.py +0 -0
  98. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_employee_experience.py +0 -0
  99. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_files.py +0 -0
  100. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_groups.py +0 -0
  101. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_identity.py +0 -0
  102. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_mail.py +0 -0
  103. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_meta.py +0 -0
  104. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_notes.py +0 -0
  105. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_organization.py +0 -0
  106. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_places.py +0 -0
  107. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_policies.py +0 -0
  108. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_print.py +0 -0
  109. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_privacy.py +0 -0
  110. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_reports.py +0 -0
  111. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_search.py +0 -0
  112. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_security.py +0 -0
  113. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_sites.py +0 -0
  114. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_solutions.py +0 -0
  115. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_storage.py +0 -0
  116. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_subscriptions.py +0 -0
  117. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_tasks.py +0 -0
  118. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_teams.py +0 -0
  119. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_user.py +0 -0
  120. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/mcp_config.json +0 -0
  121. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/office_bridge.py +0 -0
  122. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/ontology/__init__.py +0 -0
  123. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/ontology/fixtures/records.json +0 -0
  124. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/ontology/mappings/source.yaml +0 -0
  125. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/ontology/microsoft.ttl +0 -0
  126. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/ontology/migrations/manifest.json +0 -0
  127. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/ontology/shapes/connector.shacl.ttl +0 -0
  128. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/power_platform.py +0 -0
  129. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/prompts/__init__.py +0 -0
  130. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/prompts/collaboration_specialist.json +0 -0
  131. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/settings.py +0 -0
  132. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/skills/__init__.py +0 -0
  133. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-agent-operations/SKILL.md +0 -0
  134. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-agent-operations/agents/openai.yaml +0 -0
  135. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-agent-operations/references/catalog.md +0 -0
  136. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-calendar-scheduling/SKILL.md +0 -0
  137. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-mail-operations/SKILL.md +0 -0
  138. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-teams-messaging/SKILL.md +0 -0
  139. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/universal_print.py +0 -0
  140. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/windows_companion.py +0 -0
  141. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/windows_companion_service.py +0 -0
  142. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/windows_control_plane.py +0 -0
  143. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/windows_control_plane_service.py +0 -0
  144. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent/windows_runtime.py +0 -0
  145. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/dependency_links.txt +0 -0
  146. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/top_level.txt +0 -0
  147. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/README.md +0 -0
  148. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/manifest.xml +0 -0
  149. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/package-lock.json +0 -0
  150. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/package.json +0 -0
  151. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/public/assets/icon.png.b64 +0 -0
  152. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/public/assets/icon.svg +0 -0
  153. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/public/config.json +0 -0
  154. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/public/styles.css +0 -0
  155. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/public/taskpane.html +0 -0
  156. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/scripts/validate_manifest.py +0 -0
  157. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/src/backend-client.ts +0 -0
  158. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/src/office-bridge.ts +0 -0
  159. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/src/office-operations.ts +0 -0
  160. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/src/taskpane.ts +0 -0
  161. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/src/validation.ts +0 -0
  162. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/tests/backend-client.test.ts +0 -0
  163. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/tests/office-bridge.test.ts +0 -0
  164. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/tests/validation.test.ts +0 -0
  165. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/tsconfig.json +0 -0
  166. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/vitest.config.ts +0 -0
  167. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/office_addin/webpack.config.cjs +0 -0
  168. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/setup.cfg +0 -0
  169. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_api_client_extended.py +0 -0
  170. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_auth.py +0 -0
  171. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_auth_coverage.py +0 -0
  172. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_bug_cx_046_ctx_info_awaited.py +0 -0
  173. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_config_cli.py +0 -0
  174. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_credential_adapter.py +0 -0
  175. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_document_service.py +0 -0
  176. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_generate_code.py +0 -0
  177. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_graph_file_service.py +0 -0
  178. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_graph_reliability.py +0 -0
  179. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_graph_transport.py +0 -0
  180. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_init_dynamics.py +0 -0
  181. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_integration_adapters.py +0 -0
  182. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_integration_auth.py +0 -0
  183. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_integration_config_and_tools.py +0 -0
  184. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_intune_service.py +0 -0
  185. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_kg_ingest.py +0 -0
  186. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_mcp_server.py +0 -0
  187. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_office_bridge.py +0 -0
  188. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_office_manifest.py +0 -0
  189. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_placeholder.py +0 -0
  190. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_power_platform.py +0 -0
  191. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_sdk_centralization.py +0 -0
  192. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_teams_reliability.py +0 -0
  193. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_transport_tls.py +0 -0
  194. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_windows_companion.py +0 -0
  195. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_windows_control_plane.py +0 -0
  196. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_windows_control_plane_service.py +0 -0
  197. {microsoft_agent-2.3.5 → microsoft_agent-2.3.7}/tests/test_windows_runtime.py +0 -0
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: microsoft-agent
3
- Version: 2.3.5
3
+ Version: 2.3.7
4
4
  Summary: Governed Microsoft Graph agent and MCP server
5
- Author-email: Project Maintainers <maintainers@users.noreply.github.com>
5
+ Author-email: Repository Maintainers <maintainers@knuckles.team>
6
6
  License-Expression: MIT
7
7
  Classifier: Development Status :: 3 - Alpha
8
8
  Classifier: Environment :: Console
@@ -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.4.1
14
+ Requires-Dist: scion-sdk[mcp]<0.6.0,>=0.5.9
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.4.1; extra == "mcp"
22
+ Requires-Dist: scion-sdk[mcp]<0.6.0,>=0.5.9; 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.5**
74
+ Current package version: **2.3.6**
75
75
 
76
76
  ## Capabilities
77
77
 
@@ -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.5**
6
+ Current package version: **2.3.6**
7
7
 
8
8
  ## Capabilities
9
9
 
@@ -0,0 +1,24 @@
1
+ """Microsoft Agent.
2
+
3
+ CONCEPT:AU-ECO.mcp.fastmcp-middleware
4
+ """
5
+
6
+ from agent_connector_sdk.connector import Connector
7
+ from agent_connector_sdk.connector_hooks import RegistrationContext
8
+
9
+ from microsoft_agent._version import __version__
10
+
11
+
12
+ def _register_kg_tools(context: RegistrationContext) -> None:
13
+ """Register the knowledge-graph ingestion tool through the SDK's shared hook."""
14
+ from microsoft_agent.mcp_server import register_kg_tools
15
+
16
+ register_kg_tools(context.server)
17
+
18
+
19
+ connector = Connector(
20
+ instructions="microsoft-agent MCP Server — Condensed Action-Routed Tools.",
21
+ extra_registrations=(_register_kg_tools,),
22
+ )
23
+
24
+ __all__ = ["__version__", "connector"]
@@ -0,0 +1,5 @@
1
+ """Installed distribution version used by every Microsoft Agent entry point."""
2
+
3
+ from agent_connector_sdk.connector_identity import connector_version
4
+
5
+ __version__ = connector_version("microsoft_agent")
@@ -6,12 +6,13 @@ Served live as ``connector://resources``. Regenerate by editing the declarations
6
6
  # ruff: noqa: E501
7
7
  from __future__ import annotations
8
8
 
9
+ from typing import Any
10
+
9
11
  from agent_connector_sdk.ingest.live_declaration import source_meta
10
- from agent_connector_sdk.ingest.sources import IngestSourceDeclaration, IngestSourceSpec
11
12
 
12
- CONNECTOR = "microsoft-mcp"
13
+ CONNECTOR: str = "microsoft-mcp"
13
14
 
14
- SOURCES = (
15
+ SOURCES: tuple[Any, ...] = (
15
16
  source_meta(
16
17
  tool="list_microsoft_ingestion_projection",
17
18
  source_id="microsoft-user-structure",
@@ -30,7 +31,7 @@ SOURCES = (
30
31
  ),
31
32
  )
32
33
 
33
- SCHEMA_MAPPINGS = {
34
+ SCHEMA_MAPPINGS: dict[str, Any] = {
34
35
  "Event": {
35
36
  "fields": {},
36
37
  "ontology_class": "Event",
@@ -45,7 +46,7 @@ SCHEMA_MAPPINGS = {
45
46
  },
46
47
  }
47
48
 
48
- RESOURCES = (
49
+ RESOURCES: tuple[dict[str, str], ...] = (
49
50
  {
50
51
  "id_prefix": "event",
51
52
  "label": "Opaque Microsoft event reference",
@@ -62,22 +63,3 @@ RESOURCES = (
62
63
  "name": "Message",
63
64
  },
64
65
  )
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
- )
@@ -25,10 +25,12 @@ warnings.filterwarnings("ignore", message=".*urllib3.*or charset_normalizer.*")
25
25
 
26
26
  import logging
27
27
  import sys
28
+ from pathlib import Path
28
29
  from typing import Any
29
30
 
30
31
  from agent_connector_sdk.config import load_config
31
32
  from agent_connector_sdk.mcp.concurrency import invoke_client_method
33
+ from agent_connector_sdk.mcp.content import ConnectorContent
32
34
  from agent_connector_sdk.mcp.server import create_mcp_server
33
35
  from agent_connector_sdk.mcp.tool_surface import register_tool_surface
34
36
  from starlette.requests import Request
@@ -268,6 +270,11 @@ def get_mcp_instance() -> tuple[Any, ...]:
268
270
  name="microsoft-agent MCP",
269
271
  version=__version__,
270
272
  instructions="microsoft-agent MCP Server — Condensed Action-Routed Tools.",
273
+ content=ConnectorContent.for_package(
274
+ "microsoft_agent",
275
+ Path(__file__).resolve().parent,
276
+ __version__,
277
+ ),
271
278
  )
272
279
 
273
280
  @mcp.custom_route("/health", methods=["GET"])
@@ -281,6 +288,7 @@ def get_mcp_instance() -> tuple[Any, ...]:
281
288
  service="microsoft-agent",
282
289
  tools_module=sys.modules[__name__],
283
290
  )
291
+ register_kg_tools(mcp)
284
292
 
285
293
  settings = get_settings()
286
294
  if settings.tool_group_enabled("documents"):
@@ -1,9 +1,9 @@
1
1
  {
2
- "api_version": "arbora.io/v1",
2
+ "api_version": "graphos.io/v1",
3
3
  "artifacts": {
4
4
  "microsoft_agent/ontology/fixtures/records.json": "b29cde0f53b0625dc50c3941d745092f2712044bfd31b9565301c6a314f60adc",
5
5
  "microsoft_agent/ontology/mappings/source.yaml": "c9834a4cec0b3d9eea10f40e26ea647d848b08174d9fd34ab2e468db52a90497",
6
- "microsoft_agent/ontology/microsoft.ttl": "b2c0937318954ef2c5d2a01ad14c097581885cf5670e94de99e90c9143351b00",
6
+ "microsoft_agent/ontology/microsoft.ttl": "96fc5438f5d6d05e8c346fb46703db5c08a5b98c7e6dad228d05018c8c4158a0",
7
7
  "microsoft_agent/ontology/migrations/manifest.json": "aea905ab1ef096fddd5f5d04403c48ebabb00492114990ca801a84aebf00c230",
8
8
  "microsoft_agent/ontology/shapes/connector.shacl.ttl": "9c3c6656786b976b4539153dfda1a56ae33f80b0cef449a637694cbba7620822"
9
9
  },
@@ -15,7 +15,7 @@
15
15
  "synthetic_fixture_contract": "passed"
16
16
  },
17
17
  "compatibility": {
18
- "agent_connector_sdk": ">=2.5.0,<3",
18
+ "agent_utilities": ">=2.5.0,<3",
19
19
  "bundle_schema": "2",
20
20
  "epistemic_graph": ">=2.27.0,<3"
21
21
  },
@@ -29,5 +29,5 @@
29
29
  "signer": "UNSIGNED-PREVIEW",
30
30
  "signing_public_key": "",
31
31
  "status": "source-validated",
32
- "validated_at": "2026-08-26T13:42:55Z"
32
+ "validated_at": "2026-10-30T01:38:49Z"
33
33
  }
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: microsoft-agent-development
3
+ skill_type: skill
4
+ domain: development
5
+ description: >-
6
+ Develop, test, gate, and release the microsoft-agent connector. Use this skill
7
+ when changing Microsoft Graph integrations, governed MCP tools, packaged
8
+ connector content, documentation, or repository gates.
9
+ license: MIT
10
+ tags: [microsoft, graph, development, connector, test, gates]
11
+ tier: repository
12
+ metadata:
13
+ author: Genius
14
+ version: '0.1.0'
15
+ ---
16
+
17
+ # microsoft-agent development
18
+
19
+ This repository owns the Microsoft Graph client, authentication boundary,
20
+ action-routed MCP tools, provider mappings, ontology, and packaged connector
21
+ content. Shared connector contracts and transports belong to
22
+ `agent-connector-sdk`; admission, serving, and durable graph state belong to
23
+ their owning repositories. Read `AGENTS.md` before changing code. Keep tenant
24
+ identifiers, credentials, private endpoints, provider records, and raw
25
+ personal data out of source, logs, fixtures, and packaged skill content.
26
+
27
+ ## Rapid delivery: the 5-minute contract
28
+
29
+ Specs are already designed. Deliver small, reviewable slices and cite the
30
+ owning spec row in the commit trailer.
31
+
32
+ - Find the owning row first with `git grep -n "<term>" -- specs` and extend the
33
+ existing spec before adding requirement text.
34
+ - Reuse the one SDK `Connector`, the existing Graph client, auth/settings
35
+ boundary, and action-routed tool modules. Do not create a second MCP,
36
+ authentication, graph-ingest, or safety plane.
37
+ - Preserve fail-closed read/write/destructive policy, tenant and provenance
38
+ checks, TLS verification, and the existing condensed and verbose tool
39
+ surfaces. Provider calls remain mocked in local tests.
40
+ - Bind every delivered requirement to a focused test. Generated
41
+ `specs/*/status.json` files come from the shared hooks; never hand-edit them.
42
+ - Keep `skills/**`, `ontology/**`, `connectors/**`, prompts, manifests, and
43
+ package-data declarations coherent. Put `Spec: <ID>` and the assisting-agent
44
+ trailer on consecutive final commit message lines.
45
+
46
+ ## Setup and gates
47
+
48
+ Use the pinned environment and shared gates from the checkout root:
49
+
50
+ ```bash
51
+ uv sync --locked
52
+ uvx pre-commit run --all-files
53
+ uvx pre-commit run --all-files --hook-stage pre-push
54
+ ```
55
+
56
+ For focused feedback, use tests that exercise the actual connector paths:
57
+
58
+ ```bash
59
+ /var/tmp/arbora-delivery/scale/run-narrow-test-slot.sh \
60
+ uv run --locked --extra test pytest -q \
61
+ tests/test_publication_workflow.py \
62
+ tests/test_default_content_surfaces.py \
63
+ tests/test_startup.py \
64
+ tests/test_mcp_server.py \
65
+ tests/test_auth.py
66
+ ```
67
+
68
+ Do not call Microsoft Graph or require tenant credentials in local gates.
69
+ Preserve the existing Graph client composition, MSAL identity modes, optional
70
+ Office/Power Platform/Intune/Windows integrations, and governed KG ingestion
71
+ when changing a provider module.
72
+
73
+ ## Packaging and publication
74
+
75
+ Keep `microsoft_agent/skills/`, `microsoft_agent/ontology/`,
76
+ `microsoft_agent/connectors/`, prompts, and manifests in the package-data and
77
+ entry-point contracts. Build locally with `uv build` and inspect the wheel for
78
+ `microsoft_agent/skills/microsoft-agent-development/SKILL.md` before a release.
79
+ The canonical Pages publisher is `.github/workflows/pages.yml`; it calls the
80
+ shared Pipelines workflow with `.config/spec-dashboard.json`, keeps manual
81
+ dispatch and the docs/spec/config/workflow path filters, and publishes the
82
+ source-backed dashboard at `spec-delivery/`. Do not add a second documentation
83
+ publisher or claim Pages publication from a local build.
84
+
85
+ Keep package version mirrors and `uv.lock` coherent for a genuine packaged
86
+ content release. Central generation owns connector manifests and release
87
+ container artifacts; preserve this package's existing runtime, auth, and port
88
+ semantics while inspecting generated output before making claims.
89
+
90
+ ## Change discipline
91
+
92
+ - Keep Microsoft Graph calls, mappings, ontology, source declarations, and MCP
93
+ schemas under this repository's connector boundary. SDK transport, shared
94
+ ingest contracts, and Arbora admission belong to their owner repositories.
95
+ - Use deployment-owned `MICROSOFT_*` identity and policy configuration only;
96
+ never print or commit credentials, token caches, private endpoints, or tenant
97
+ profiles. Preserve mandatory TLS verification and fail-closed authorization.
98
+ - For mutations, inspect current state first, require explicit approval where
99
+ the existing procedure calls for it, and verify the result. Keep KG
100
+ ingestion governed by the signed source and ChangeEnvelope path.
101
+ - Keep generated status changes and central promotion with the Pipelines/status
102
+ owner. Do not claim a row is landed or verified from a local edit alone.
@@ -82,6 +82,9 @@ def classify_tool_risk(tool_name: str) -> ToolRisk:
82
82
  """Classify a tool conservatively from its stable public name."""
83
83
 
84
84
  name = tool_name.lower().strip()
85
+ # Served tools carry the connector prefix (``microsoft_list_service_health``);
86
+ # the verb that decides the risk follows it.
87
+ name = name.removeprefix("microsoft_")
85
88
  if name in ALWAYS_ALLOWED:
86
89
  return ToolRisk.READ
87
90
  if any(fnmatch.fnmatch(name, pattern) for pattern in DESTRUCTIVE_PATTERNS):
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: microsoft-agent
3
- Version: 2.3.5
3
+ Version: 2.3.7
4
4
  Summary: Governed Microsoft Graph agent and MCP server
5
- Author-email: Project Maintainers <maintainers@users.noreply.github.com>
5
+ Author-email: Repository Maintainers <maintainers@knuckles.team>
6
6
  License-Expression: MIT
7
7
  Classifier: Development Status :: 3 - Alpha
8
8
  Classifier: Environment :: Console
@@ -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.4.1
14
+ Requires-Dist: scion-sdk[mcp]<0.6.0,>=0.5.9
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.4.1; extra == "mcp"
22
+ Requires-Dist: scion-sdk[mcp]<0.6.0,>=0.5.9; 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.5**
74
+ Current package version: **2.3.6**
75
75
 
76
76
  ## Capabilities
77
77
 
@@ -123,6 +123,7 @@ microsoft_agent/ontology/shapes/connector.shacl.ttl
123
123
  microsoft_agent/prompts/__init__.py
124
124
  microsoft_agent/prompts/collaboration_specialist.json
125
125
  microsoft_agent/skills/__init__.py
126
+ microsoft_agent/skills/microsoft-agent-development/SKILL.md
126
127
  microsoft_agent/skills/microsoft-agent-operations/SKILL.md
127
128
  microsoft_agent/skills/microsoft-agent-operations/agents/openai.yaml
128
129
  microsoft_agent/skills/microsoft-agent-operations/references/catalog.md
@@ -176,13 +177,13 @@ tests/test_office_manifest.py
176
177
  tests/test_onenote_sharepoint_print.py
177
178
  tests/test_placeholder.py
178
179
  tests/test_power_platform.py
180
+ tests/test_publication_workflow.py
179
181
  tests/test_sdk_centralization.py
180
182
  tests/test_settings_and_policy.py
181
183
  tests/test_startup.py
182
184
  tests/test_teams_reliability.py
183
185
  tests/test_transport_migration.py
184
186
  tests/test_transport_tls.py
185
- tests/test_verify_api_integration.py
186
187
  tests/test_windows_companion.py
187
188
  tests/test_windows_control_plane.py
188
189
  tests/test_windows_control_plane_service.py
@@ -1,18 +1,9 @@
1
1
  [agent_connector_sdk.connector]
2
- microsoft-mcp = microsoft_agent
3
-
4
- [agent_connector_sdk.ontology_providers]
5
- microsoft-agent = microsoft_agent.ontology
2
+ microsoft-mcp = microsoft_agent:connector
6
3
 
7
4
  [agent_connector_sdk.prompt_providers]
8
5
  microsoft-agent = microsoft_agent.prompts
9
6
 
10
- [agent_connector_sdk.skill_providers]
11
- microsoft-agent = microsoft_agent.skills
12
-
13
- [agent_connector_sdk.source_connector_providers]
14
- microsoft-agent = microsoft_agent.connectors
15
-
16
7
  [console_scripts]
17
8
  microsoft-config = microsoft_agent.config_cli:main
18
9
  microsoft-mcp = microsoft_agent.mcp_server:mcp_server
@@ -1,4 +1,4 @@
1
- agent-connector-sdk[mcp]<1.0.0,>=0.4.1
1
+ scion-sdk[mcp]<0.6.0,>=0.5.9
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.4.1
43
+ scion-sdk[mcp]<0.6.0,>=0.5.9
44
44
 
45
45
  [test]
46
46
  cryptography>=50.0.2
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "microsoft-agent"
7
- dynamic = ["version"]
7
+ version = "2.3.7"
8
8
  description = "Governed Microsoft Graph agent and MCP server"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -14,15 +14,15 @@ classifiers = [
14
14
  "Operating System :: OS Independent",
15
15
  "Programming Language :: Python :: 3",
16
16
  ]
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",]
17
+ dependencies = [ "scion-sdk[mcp]>=0.5.9,<0.6.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]]
21
- name = "Project Maintainers"
22
- email = "maintainers@users.noreply.github.com"
21
+ name = "Repository Maintainers"
22
+ email = "maintainers@knuckles.team"
23
23
 
24
24
  [project.optional-dependencies]
25
- mcp = [ "agent-connector-sdk[mcp]>=0.4.1,<1.0.0",]
25
+ mcp = [ "scion-sdk[mcp]>=0.5.9,<0.6.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 = [
@@ -73,20 +73,12 @@ microsoft-config = "microsoft_agent.config_cli:main"
73
73
  microsoft-windows-companion = "microsoft_agent.windows_companion_service:main"
74
74
  microsoft-windows-control-plane = "microsoft_agent.windows_control_plane_service:main"
75
75
 
76
- [project.entry-points."agent_connector_sdk.source_connector_providers"]
77
- microsoft-agent = "microsoft_agent.connectors"
78
-
79
- [project.entry-points."agent_connector_sdk.skill_providers"]
80
- microsoft-agent = "microsoft_agent.skills"
81
-
82
- [project.entry-points."agent_connector_sdk.ontology_providers"]
83
- microsoft-agent = "microsoft_agent.ontology"
84
-
85
76
  [project.entry-points."agent_connector_sdk.prompt_providers"]
86
77
  microsoft-agent = "microsoft_agent.prompts"
87
78
 
88
79
  [dependency-groups]
89
80
  dev = [
81
+ "bump2version>=1.0.1,<2",
90
82
  "mypy>=2.4.0,<3",
91
83
  "pytest>=9.1.1,<10",
92
84
  "pytest-asyncio>=1.4.0,<2",
@@ -96,9 +88,9 @@ dev = [
96
88
  "ruff>=0.17.1,<1",
97
89
  ]
98
90
 
99
- # The one declared connector identity: the fleet name (SDK-CONNECTOR-CONTROL-R071).
91
+ # The one declared connector identity: the fleet name (SCION-CONNECTOR-CONTROL-R071).
100
92
  [project.entry-points."agent_connector_sdk.connector"]
101
- microsoft-mcp = "microsoft_agent"
93
+ microsoft-mcp = "microsoft_agent:connector"
102
94
 
103
95
  [tool.uv.workspace]
104
96
  members = ["."]
@@ -106,9 +98,6 @@ members = ["."]
106
98
  [tool.setuptools]
107
99
  include-package-data = false
108
100
 
109
- [tool.setuptools.dynamic]
110
- version = {attr = "microsoft_agent._version.__version__"}
111
-
112
101
  [tool.setuptools.package-data]
113
102
  microsoft_agent = ["connectors/**", "ontology/**", "prompts/**", "skills/**"]
114
103
 
@@ -143,5 +132,8 @@ follow_imports = "skip"
143
132
  [tool.vulture]
144
133
  ignore_names = ["request", "config"]
145
134
 
135
+ [tool.pipelines.codespell]
136
+ ignore_words = ["aNULL"]
137
+
146
138
  [tool.pipelines_hooks.ste]
147
139
  exempt = ["specs/*", "specs/**/*"]
@@ -16,13 +16,16 @@ pytestmark = pytest.mark.spec("CONN-MICROSOFT-AGENT-CONNECTOR-CONTENT-R001")
16
16
 
17
17
 
18
18
  def _server():
19
- namespace = {"__name__": PACKAGE + ".mcp_server"}
20
- exec(
21
- "from agent_connector_sdk.mcp.server import create_mcp_server\n"
22
- "result = create_mcp_server('microsoft-mcp', version='0', command_args=[])",
23
- namespace,
24
- )
25
- return namespace["result"][1]
19
+ from unittest.mock import patch
20
+
21
+ from fastmcp import FastMCP
22
+
23
+ module = importlib.import_module("microsoft_agent.mcp_server")
24
+ with patch("sys.argv", ["mcp_server.py", "--transport", "stdio"]):
25
+ result = module.get_mcp_instance()
26
+ if isinstance(result, FastMCP):
27
+ return result
28
+ return next(value for value in result if isinstance(value, FastMCP))
26
29
 
27
30
 
28
31
  async def _listings():
File without changes
@@ -1,6 +1,6 @@
1
1
  import json
2
2
  import sys
3
- from unittest.mock import AsyncMock, MagicMock, patch
3
+ from unittest.mock import MagicMock, patch
4
4
 
5
5
  import pytest
6
6
 
@@ -10,6 +10,7 @@ from unittest.mock import AsyncMock, MagicMock, patch
10
10
 
11
11
  import pytest
12
12
  from fastmcp import FastMCP
13
+ from kiota_abstractions.headers_collection import HeadersCollection
13
14
  from kiota_abstractions.method import Method
14
15
  from pydantic import ValidationError
15
16
 
@@ -82,7 +83,9 @@ async def test_onenote_create_sends_raw_html_request(mock_auth_manager) -> None:
82
83
  pages = MagicMock()
83
84
  pages.url_template = "{+baseurl}/me/onenote/pages"
84
85
  pages.path_parameters = {"baseurl": "https://graph.microsoft.com/v1.0"}
85
- pages.to_post_request_configuration.return_value = MagicMock(options=[])
86
+ pages.to_post_request_configuration.return_value = MagicMock(
87
+ options=[], headers=HeadersCollection(), query_parameters=None
88
+ )
86
89
  pages.request_adapter.send_async = AsyncMock(return_value=native)
87
90
  client = MagicMock()
88
91
  client.me.onenote.pages = pages
@@ -0,0 +1,78 @@
1
+ """Keep the connector's canonical Pages and packaged skill contract explicit."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ import re
7
+ from pathlib import Path
8
+
9
+ import yaml
10
+
11
+ ROOT = Path(__file__).resolve().parents[1]
12
+
13
+
14
+ def _workflow(name: str):
15
+ return yaml.safe_load((ROOT / ".github/workflows" / name).read_text())
16
+
17
+
18
+ def _actions_on(workflow: dict):
19
+ # PyYAML's YAML 1.1 reader represents the Actions ``on`` key as True.
20
+ return workflow["on"] if "on" in workflow else workflow[True]
21
+
22
+
23
+ def test_pages_publishes_spec_dashboard_and_supports_manual_refresh():
24
+
25
+ config = json.loads((ROOT / ".config/spec-dashboard.json").read_text())
26
+ assert config == {
27
+ "version": 1,
28
+ "sources": [{"glob": "specs/*/status.json", "kind": "spec"}],
29
+ }
30
+
31
+
32
+ def test_single_pages_publisher_has_no_legacy_docs_workflow():
33
+ assert not (ROOT / ".github/workflows/docs.yml").exists()
34
+
35
+
36
+ def test_development_skill_names_actual_runtime_and_focused_tests():
37
+ skill = ROOT / "microsoft_agent/skills/microsoft-agent-development/SKILL.md"
38
+ content = skill.read_text()
39
+
40
+ assert "name: microsoft-agent-development" in content
41
+ assert "## Rapid delivery: the 5-minute contract" in content
42
+ for path in (
43
+ "microsoft_agent/__init__.py",
44
+ "microsoft_agent/auth.py",
45
+ "microsoft_agent/api_client.py",
46
+ "microsoft_agent/mcp_server.py",
47
+ "tests/test_publication_workflow.py",
48
+ "tests/test_default_content_surfaces.py",
49
+ "tests/test_startup.py",
50
+ "tests/test_mcp_server.py",
51
+ "tests/test_auth.py",
52
+ ):
53
+ assert (ROOT / path).exists(), path
54
+ for runtime_name in (
55
+ "agent-connector-sdk",
56
+ "MICROSOFT_",
57
+ "Microsoft Graph",
58
+ "ChangeEnvelope",
59
+ "TLS",
60
+ ):
61
+ assert runtime_name in content
62
+
63
+
64
+ def test_packaged_skill_and_version_contract_are_coherent():
65
+ version_text = (ROOT / "microsoft_agent/_version.py").read_text()
66
+ # The version is read from distribution metadata; no module spells a literal.
67
+ assert 'connector_version("microsoft_agent")' in version_text
68
+ assert re.search(r'__version__\s*=\s*["\d]', version_text) is None
69
+ lock = (ROOT / "uv.lock").read_text()
70
+ assert 'name = "microsoft-agent"' in lock
71
+ package_data = (ROOT / "pyproject.toml").read_text()
72
+ assert (
73
+ 'microsoft_agent = ["connectors/**", "ontology/**", "prompts/**", "skills/**"]'
74
+ in package_data
75
+ )
76
+ assert (
77
+ ROOT / "microsoft_agent/skills/microsoft-agent-development/SKILL.md"
78
+ ).is_file()
@@ -201,3 +201,13 @@ def test_policy_separates_writes_and_destructive_actions():
201
201
  )
202
202
  )
203
203
  assert destructive_policy.require("delete_mail_message").allowed is True
204
+
205
+
206
+ def test_served_tool_prefix_does_not_hide_a_read_verb():
207
+ """Served names carry ``microsoft_``; a read verb after it stays a read."""
208
+ from microsoft_agent.tool_policy import ToolRisk, classify_tool_risk
209
+
210
+ assert classify_tool_risk("microsoft_list_service_health") is ToolRisk.READ
211
+ assert classify_tool_risk("list_service_health") is ToolRisk.READ
212
+ assert classify_tool_risk("microsoft_delete_user") is ToolRisk.DESTRUCTIVE
213
+ assert classify_tool_risk("microsoft_unknownverb_thing") is ToolRisk.WRITE
File without changes
@@ -35,9 +35,7 @@ def test_provider_transport_uses_pinned_tls_and_closes_once(monkeypatch) -> None
35
35
  resolver = MagicMock(return_value=profile)
36
36
  client = MagicMock()
37
37
  factory = MagicMock(return_value=client)
38
- monkeypatch.setattr(
39
- "microsoft_agent.power_platform.resolve_tls_profile", resolver
40
- )
38
+ monkeypatch.setattr("microsoft_agent.power_platform.resolve_tls_profile", resolver)
41
39
  monkeypatch.setattr("microsoft_agent.power_platform.create_http_client", factory)
42
40
 
43
41
  transport = HttpxAsyncHttpTransport(
@@ -1,8 +0,0 @@
1
- """Microsoft Agent.
2
-
3
- CONCEPT:AU-ECO.mcp.fastmcp-middleware
4
- """
5
-
6
- from microsoft_agent._version import __version__
7
-
8
- __all__ = ["__version__"]