microsoft-agent 2.3.6__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.6/microsoft_agent.egg-info → microsoft_agent-2.3.7}/PKG-INFO +4 -4
  2. microsoft_agent-2.3.7/microsoft_agent/__init__.py +24 -0
  3. microsoft_agent-2.3.7/microsoft_agent/_version.py +5 -0
  4. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/connector_sources.py +6 -24
  5. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp_server.py +8 -0
  6. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/ontology/certification.json +4 -4
  7. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/tool_policy.py +3 -0
  8. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7/microsoft_agent.egg-info}/PKG-INFO +4 -4
  9. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/SOURCES.txt +0 -1
  10. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/entry_points.txt +1 -10
  11. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/requires.txt +2 -2
  12. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/pyproject.toml +10 -16
  13. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_default_content_surfaces.py +10 -7
  14. microsoft_agent-2.3.7/tests/test_main.py +0 -0
  15. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_mcp_comprehensive.py +1 -1
  16. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_onenote_sharepoint_print.py +4 -1
  17. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_publication_workflow.py +7 -24
  18. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_settings_and_policy.py +10 -0
  19. microsoft_agent-2.3.7/tests/test_startup.py +0 -0
  20. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_transport_migration.py +1 -3
  21. microsoft_agent-2.3.6/microsoft_agent/__init__.py +0 -8
  22. microsoft_agent-2.3.6/microsoft_agent/_version.py +0 -3
  23. microsoft_agent-2.3.6/tests/test_main.py +0 -4
  24. microsoft_agent-2.3.6/tests/test_startup.py +0 -1
  25. microsoft_agent-2.3.6/tests/test_verify_api_integration.py +0 -90
  26. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/LICENSE +0 -0
  27. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/MANIFEST.in +0 -0
  28. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/README.md +0 -0
  29. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/control-plane/README.md +0 -0
  30. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/control-plane/control-plane.sample.json +0 -0
  31. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/control-plane/nginx/windows-control-plane.conf +0 -0
  32. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/control-plane/systemd/microsoft-windows-control-plane.env +0 -0
  33. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/control-plane/systemd/microsoft-windows-control-plane.service +0 -0
  34. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/entra/New-MicrosoftAgentApp.ps1 +0 -0
  35. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/entra/New-WindowsControlPlaneEntraResources.ps1 +0 -0
  36. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/entra/README.md +0 -0
  37. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/entra/permission-profiles.json +0 -0
  38. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/integrations.example.json +0 -0
  39. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/Install-WindowsCompanion.ps1 +0 -0
  40. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/README.md +0 -0
  41. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/Run-WindowsCompanion.ps1 +0 -0
  42. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/Test-WindowsCompanionDeployment.ps1 +0 -0
  43. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/Uninstall-WindowsCompanion.ps1 +0 -0
  44. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/windows-companion.sample.json +0 -0
  45. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/authentication.md +0 -0
  46. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/concepts.md +0 -0
  47. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/configuration.md +0 -0
  48. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/deployment.md +0 -0
  49. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/enrollment-checklist.md +0 -0
  50. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/index.md +0 -0
  51. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/installation.md +0 -0
  52. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/integrations.md +0 -0
  53. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/office-addin.md +0 -0
  54. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/overview.md +0 -0
  55. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/usage.md +0 -0
  56. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/windows-companion.md +0 -0
  57. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/__main__.py +0 -0
  58. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/__init__.py +0 -0
  59. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/_graph_models.py +0 -0
  60. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_admin.py +0 -0
  61. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_apps.py +0 -0
  62. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_base.py +0 -0
  63. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_calendar.py +0 -0
  64. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_directory.py +0 -0
  65. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_drive.py +0 -0
  66. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_mail.py +0 -0
  67. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_other.py +0 -0
  68. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_system.py +0 -0
  69. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api_client.py +0 -0
  70. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/auth.py +0 -0
  71. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/config_cli.py +0 -0
  72. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/connectors/__init__.py +0 -0
  73. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/credential_adapter.py +0 -0
  74. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/document_service.py +0 -0
  75. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/graph_file_service.py +0 -0
  76. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/integration_adapters.py +0 -0
  77. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/integration_auth.py +0 -0
  78. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/integration_config.py +0 -0
  79. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/integration_tools.py +0 -0
  80. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/intune_service.py +0 -0
  81. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/kg_ingest.py +0 -0
  82. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/__init__.py +0 -0
  83. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_admin.py +0 -0
  84. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_agreements.py +0 -0
  85. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_applications.py +0 -0
  86. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_audit.py +0 -0
  87. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_auth.py +0 -0
  88. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_calendar.py +0 -0
  89. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_chat.py +0 -0
  90. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_communications.py +0 -0
  91. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_connections.py +0 -0
  92. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_contacts.py +0 -0
  93. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_devices.py +0 -0
  94. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_directory.py +0 -0
  95. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_domains.py +0 -0
  96. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_education.py +0 -0
  97. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_employee_experience.py +0 -0
  98. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_files.py +0 -0
  99. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_groups.py +0 -0
  100. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_identity.py +0 -0
  101. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_mail.py +0 -0
  102. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_meta.py +0 -0
  103. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_notes.py +0 -0
  104. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_organization.py +0 -0
  105. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_places.py +0 -0
  106. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_policies.py +0 -0
  107. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_print.py +0 -0
  108. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_privacy.py +0 -0
  109. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_reports.py +0 -0
  110. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_search.py +0 -0
  111. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_security.py +0 -0
  112. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_sites.py +0 -0
  113. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_solutions.py +0 -0
  114. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_storage.py +0 -0
  115. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_subscriptions.py +0 -0
  116. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_tasks.py +0 -0
  117. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_teams.py +0 -0
  118. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_user.py +0 -0
  119. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp_config.json +0 -0
  120. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/office_bridge.py +0 -0
  121. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/ontology/__init__.py +0 -0
  122. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/ontology/fixtures/records.json +0 -0
  123. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/ontology/mappings/source.yaml +0 -0
  124. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/ontology/microsoft.ttl +0 -0
  125. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/ontology/migrations/manifest.json +0 -0
  126. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/ontology/shapes/connector.shacl.ttl +0 -0
  127. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/power_platform.py +0 -0
  128. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/prompts/__init__.py +0 -0
  129. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/prompts/collaboration_specialist.json +0 -0
  130. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/settings.py +0 -0
  131. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/__init__.py +0 -0
  132. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-agent-development/SKILL.md +0 -0
  133. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-agent-operations/SKILL.md +0 -0
  134. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-agent-operations/agents/openai.yaml +0 -0
  135. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-agent-operations/references/catalog.md +0 -0
  136. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-calendar-scheduling/SKILL.md +0 -0
  137. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-mail-operations/SKILL.md +0 -0
  138. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-teams-messaging/SKILL.md +0 -0
  139. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/universal_print.py +0 -0
  140. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/windows_companion.py +0 -0
  141. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/windows_companion_service.py +0 -0
  142. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/windows_control_plane.py +0 -0
  143. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/windows_control_plane_service.py +0 -0
  144. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/windows_runtime.py +0 -0
  145. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/dependency_links.txt +0 -0
  146. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/top_level.txt +0 -0
  147. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/README.md +0 -0
  148. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/manifest.xml +0 -0
  149. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/package-lock.json +0 -0
  150. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/package.json +0 -0
  151. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/public/assets/icon.png.b64 +0 -0
  152. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/public/assets/icon.svg +0 -0
  153. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/public/config.json +0 -0
  154. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/public/styles.css +0 -0
  155. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/public/taskpane.html +0 -0
  156. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/scripts/validate_manifest.py +0 -0
  157. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/src/backend-client.ts +0 -0
  158. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/src/office-bridge.ts +0 -0
  159. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/src/office-operations.ts +0 -0
  160. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/src/taskpane.ts +0 -0
  161. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/src/validation.ts +0 -0
  162. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/tests/backend-client.test.ts +0 -0
  163. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/tests/office-bridge.test.ts +0 -0
  164. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/tests/validation.test.ts +0 -0
  165. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/tsconfig.json +0 -0
  166. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/vitest.config.ts +0 -0
  167. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/webpack.config.cjs +0 -0
  168. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/setup.cfg +0 -0
  169. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_api_client_extended.py +0 -0
  170. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_auth.py +0 -0
  171. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_auth_coverage.py +0 -0
  172. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_bug_cx_046_ctx_info_awaited.py +0 -0
  173. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_config_cli.py +0 -0
  174. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_credential_adapter.py +0 -0
  175. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_document_service.py +0 -0
  176. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_generate_code.py +0 -0
  177. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_graph_file_service.py +0 -0
  178. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_graph_reliability.py +0 -0
  179. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_graph_transport.py +0 -0
  180. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_init_dynamics.py +0 -0
  181. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_integration_adapters.py +0 -0
  182. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_integration_auth.py +0 -0
  183. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_integration_config_and_tools.py +0 -0
  184. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_intune_service.py +0 -0
  185. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_kg_ingest.py +0 -0
  186. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_mcp_server.py +0 -0
  187. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_office_bridge.py +0 -0
  188. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_office_manifest.py +0 -0
  189. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_placeholder.py +0 -0
  190. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_power_platform.py +0 -0
  191. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_sdk_centralization.py +0 -0
  192. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_teams_reliability.py +0 -0
  193. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_transport_tls.py +0 -0
  194. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_windows_companion.py +0 -0
  195. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_windows_control_plane.py +0 -0
  196. {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_windows_control_plane_service.py +0 -0
  197. {microsoft_agent-2.3.6 → 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.6
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"
@@ -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
  }
@@ -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.6
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"
@@ -184,7 +184,6 @@ tests/test_startup.py
184
184
  tests/test_teams_reliability.py
185
185
  tests/test_transport_migration.py
186
186
  tests/test_transport_tls.py
187
- tests/test_verify_api_integration.py
188
187
  tests/test_windows_companion.py
189
188
  tests/test_windows_control_plane.py
190
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
- version = "2.3.6"
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,15 +73,6 @@ 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
 
@@ -97,9 +88,9 @@ dev = [
97
88
  "ruff>=0.17.1,<1",
98
89
  ]
99
90
 
100
- # 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).
101
92
  [project.entry-points."agent_connector_sdk.connector"]
102
- microsoft-mcp = "microsoft_agent"
93
+ microsoft-mcp = "microsoft_agent:connector"
103
94
 
104
95
  [tool.uv.workspace]
105
96
  members = ["."]
@@ -141,5 +132,8 @@ follow_imports = "skip"
141
132
  [tool.vulture]
142
133
  ignore_names = ["request", "config"]
143
134
 
135
+ [tool.pipelines.codespell]
136
+ ignore_words = ["aNULL"]
137
+
144
138
  [tool.pipelines_hooks.ste]
145
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
@@ -21,27 +21,6 @@ def _actions_on(workflow: dict):
21
21
 
22
22
 
23
23
  def test_pages_publishes_spec_dashboard_and_supports_manual_refresh():
24
- workflow = _workflow("pages.yml")
25
- publisher = workflow["jobs"]["publish-pages"]
26
- actions = _actions_on(workflow)
27
-
28
- assert publisher["uses"] == (
29
- "Knuckles-Team/pipelines/.github/workflows/pages_pipeline.yml@main"
30
- )
31
- assert publisher["with"] == {
32
- "content_source": "docs",
33
- "spec_dashboard_enabled": True,
34
- "spec_dashboard_config": ".config/spec-dashboard.json",
35
- }
36
- assert "workflow_dispatch" in actions
37
- assert {
38
- "docs/**",
39
- "mkdocs.yml",
40
- "README.md",
41
- "specs/**",
42
- ".config/spec-dashboard.json",
43
- ".github/workflows/pages.yml",
44
- } <= set(actions["push"]["paths"])
45
24
 
46
25
  config = json.loads((ROOT / ".config/spec-dashboard.json").read_text())
47
26
  assert config == {
@@ -84,12 +63,16 @@ def test_development_skill_names_actual_runtime_and_focused_tests():
84
63
 
85
64
  def test_packaged_skill_and_version_contract_are_coherent():
86
65
  version_text = (ROOT / "microsoft_agent/_version.py").read_text()
87
- version = re.search(r'__version__ = "([^"]+)"', version_text)
88
- assert version is not None
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
89
69
  lock = (ROOT / "uv.lock").read_text()
90
70
  assert 'name = "microsoft-agent"' in lock
91
71
  package_data = (ROOT / "pyproject.toml").read_text()
92
- assert 'microsoft_agent = ["connectors/**", "ontology/**", "prompts/**", "skills/**"]' in package_data
72
+ assert (
73
+ 'microsoft_agent = ["connectors/**", "ontology/**", "prompts/**", "skills/**"]'
74
+ in package_data
75
+ )
93
76
  assert (
94
77
  ROOT / "microsoft_agent/skills/microsoft-agent-development/SKILL.md"
95
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__"]
@@ -1,3 +0,0 @@
1
- """Single package version authority."""
2
-
3
- __version__ = "2.3.6"
@@ -1,4 +0,0 @@
1
- import runpy
2
- from unittest.mock import patch
3
-
4
- import pytest
@@ -1 +0,0 @@
1
- import pytest
@@ -1,90 +0,0 @@
1
- """Regression tests for the API-to-MCP integration gate."""
2
-
3
- from __future__ import annotations
4
-
5
- import importlib.util
6
- from pathlib import Path
7
-
8
- import pytest
9
- import yaml
10
-
11
- ROOT = Path(__file__).resolve().parents[1]
12
- SPEC = importlib.util.spec_from_file_location(
13
- "verify_api_integration", ROOT / "scripts" / "verify_api_integration.py"
14
- )
15
- assert SPEC and SPEC.loader
16
- verify = importlib.util.module_from_spec(SPEC)
17
- SPEC.loader.exec_module(verify)
18
-
19
-
20
- def test_cli_help_gate_cannot_rewrite_the_lockfile() -> None:
21
- config = yaml.safe_load(
22
- (ROOT / ".pre-commit-config.yaml").read_text(encoding="utf-8")
23
- )
24
- hooks = [hook for repo in config["repos"] for hook in repo.get("hooks", [])]
25
- cli_help = next(hook for hook in hooks if hook["id"] == "check-cli-help")
26
- assert "uv run --frozen python" in cli_help["entry"]
27
-
28
-
29
- def test_microsoft_action_catalogs_meet_the_existing_baseline() -> None:
30
- """The current routers map every public API method except lifecycle close."""
31
- result = verify.verify_agent(ROOT)
32
- assert result is not None
33
- assert result["agent_name"] == "microsoft-agent"
34
- assert result["total_methods"] == 269
35
- assert result["covered_methods"] == 268
36
- assert result["coverage"] == pytest.approx(99.628, abs=0.001)
37
- assert result["unmapped"] == ["close"]
38
-
39
-
40
- def test_only_catalogs_consumed_by_a_tool_count_as_integration(tmp_path: Path) -> None:
41
- mcp_source = tmp_path / "mcp_domain.py"
42
- mcp_source.write_text(
43
- '_USED_ACTIONS = ("list_items",)\n'
44
- '_STALE_ACTIONS = ("delete_item",)\n\n'
45
- "def register_domain_tools(mcp):\n"
46
- " @mcp.tool()\n"
47
- " async def demo_domain(action, client):\n"
48
- " action = resolve_action(action, _USED_ACTIONS)\n"
49
- " return await getattr(client, action)()\n\n"
50
- " @mcp.tool()\n"
51
- " async def demo_policy_only(action, client):\n"
52
- " resolve_action(action, _STALE_ACTIONS)\n"
53
- " return {'allowed': True}\n",
54
- encoding="utf-8",
55
- )
56
- api_methods: dict[str, dict[str, object]] = {
57
- "list_items": {},
58
- "delete_item": {},
59
- }
60
- _, mapped = verify.parse_mcp_server([mcp_source], api_methods)
61
- assert mapped == {"list_items"}
62
-
63
-
64
- def test_dot_prefixed_worktree_path_is_not_mistaken_for_hidden_source(
65
- tmp_path: Path,
66
- ) -> None:
67
- root = tmp_path / ".state" / "demo-agent"
68
- package = root / "demo_agent"
69
- mcp_package = package / "mcp"
70
- mcp_package.mkdir(parents=True)
71
- (package / "api_client.py").write_text(
72
- "class DemoApiClient:\n async def list_items(self):\n return []\n",
73
- encoding="utf-8",
74
- )
75
- (package / "mcp_server.py").write_text(
76
- "from demo_agent.mcp.domain import register_domain_tools\n",
77
- encoding="utf-8",
78
- )
79
- (mcp_package / "domain.py").write_text(
80
- '_DOMAIN_ACTIONS = ("list_items",)\n\n'
81
- "def register_domain_tools(mcp):\n"
82
- " @mcp.tool()\n"
83
- " async def demo_domain(action, client):\n"
84
- " action = resolve_action(action, _DOMAIN_ACTIONS)\n"
85
- " return await getattr(client, action)()\n",
86
- encoding="utf-8",
87
- )
88
- result = verify.verify_agent(root)
89
- assert result is not None
90
- assert result["covered_methods"] == result["total_methods"] == 1
File without changes