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.
- {microsoft_agent-2.3.6/microsoft_agent.egg-info → microsoft_agent-2.3.7}/PKG-INFO +4 -4
- microsoft_agent-2.3.7/microsoft_agent/__init__.py +24 -0
- microsoft_agent-2.3.7/microsoft_agent/_version.py +5 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/connector_sources.py +6 -24
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp_server.py +8 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/ontology/certification.json +4 -4
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/tool_policy.py +3 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7/microsoft_agent.egg-info}/PKG-INFO +4 -4
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/SOURCES.txt +0 -1
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/entry_points.txt +1 -10
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/requires.txt +2 -2
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/pyproject.toml +10 -16
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_default_content_surfaces.py +10 -7
- microsoft_agent-2.3.7/tests/test_main.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_mcp_comprehensive.py +1 -1
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_onenote_sharepoint_print.py +4 -1
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_publication_workflow.py +7 -24
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_settings_and_policy.py +10 -0
- microsoft_agent-2.3.7/tests/test_startup.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_transport_migration.py +1 -3
- microsoft_agent-2.3.6/microsoft_agent/__init__.py +0 -8
- microsoft_agent-2.3.6/microsoft_agent/_version.py +0 -3
- microsoft_agent-2.3.6/tests/test_main.py +0 -4
- microsoft_agent-2.3.6/tests/test_startup.py +0 -1
- microsoft_agent-2.3.6/tests/test_verify_api_integration.py +0 -90
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/LICENSE +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/MANIFEST.in +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/README.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/control-plane/README.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/control-plane/control-plane.sample.json +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/control-plane/nginx/windows-control-plane.conf +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/control-plane/systemd/microsoft-windows-control-plane.env +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/control-plane/systemd/microsoft-windows-control-plane.service +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/entra/New-MicrosoftAgentApp.ps1 +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/entra/New-WindowsControlPlaneEntraResources.ps1 +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/entra/README.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/entra/permission-profiles.json +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/integrations.example.json +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/Install-WindowsCompanion.ps1 +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/README.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/Run-WindowsCompanion.ps1 +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/Test-WindowsCompanionDeployment.ps1 +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/Uninstall-WindowsCompanion.ps1 +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/windows-companion.sample.json +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/authentication.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/concepts.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/configuration.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/deployment.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/enrollment-checklist.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/index.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/installation.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/integrations.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/office-addin.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/overview.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/usage.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/docs/windows-companion.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/__main__.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/__init__.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/_graph_models.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_admin.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_apps.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_base.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_calendar.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_directory.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_drive.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_mail.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_other.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api/api_client_system.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/api_client.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/auth.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/config_cli.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/connectors/__init__.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/credential_adapter.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/document_service.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/graph_file_service.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/integration_adapters.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/integration_auth.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/integration_config.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/integration_tools.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/intune_service.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/kg_ingest.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/__init__.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_admin.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_agreements.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_applications.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_audit.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_auth.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_calendar.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_chat.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_communications.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_connections.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_contacts.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_devices.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_directory.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_domains.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_education.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_employee_experience.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_files.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_groups.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_identity.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_mail.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_meta.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_notes.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_organization.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_places.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_policies.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_print.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_privacy.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_reports.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_search.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_security.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_sites.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_solutions.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_storage.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_subscriptions.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_tasks.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_teams.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp/mcp_user.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/mcp_config.json +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/office_bridge.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/ontology/__init__.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/ontology/fixtures/records.json +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/ontology/mappings/source.yaml +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/ontology/microsoft.ttl +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/ontology/migrations/manifest.json +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/ontology/shapes/connector.shacl.ttl +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/power_platform.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/prompts/__init__.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/prompts/collaboration_specialist.json +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/settings.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/__init__.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-agent-development/SKILL.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-agent-operations/SKILL.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-agent-operations/agents/openai.yaml +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-agent-operations/references/catalog.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-calendar-scheduling/SKILL.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-mail-operations/SKILL.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/skills/microsoft-teams-messaging/SKILL.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/universal_print.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/windows_companion.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/windows_companion_service.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/windows_control_plane.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/windows_control_plane_service.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent/windows_runtime.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/dependency_links.txt +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/microsoft_agent.egg-info/top_level.txt +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/README.md +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/manifest.xml +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/package-lock.json +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/package.json +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/public/assets/icon.png.b64 +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/public/assets/icon.svg +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/public/config.json +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/public/styles.css +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/public/taskpane.html +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/scripts/validate_manifest.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/src/backend-client.ts +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/src/office-bridge.ts +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/src/office-operations.ts +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/src/taskpane.ts +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/src/validation.ts +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/tests/backend-client.test.ts +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/tests/office-bridge.test.ts +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/tests/validation.test.ts +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/tsconfig.json +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/vitest.config.ts +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/office_addin/webpack.config.cjs +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/setup.cfg +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_api_client_extended.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_auth.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_auth_coverage.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_bug_cx_046_ctx_info_awaited.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_config_cli.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_credential_adapter.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_document_service.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_generate_code.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_graph_file_service.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_graph_reliability.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_graph_transport.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_init_dynamics.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_integration_adapters.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_integration_auth.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_integration_config_and_tools.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_intune_service.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_kg_ingest.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_mcp_server.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_office_bridge.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_office_manifest.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_placeholder.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_power_platform.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_sdk_centralization.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_teams_reliability.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_transport_tls.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_windows_companion.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_windows_control_plane.py +0 -0
- {microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/tests/test_windows_control_plane_service.py +0 -0
- {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.
|
|
3
|
+
Version: 2.3.7
|
|
4
4
|
Summary: Governed Microsoft Graph agent and MCP server
|
|
5
|
-
Author-email:
|
|
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:
|
|
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:
|
|
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"]
|
|
@@ -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": "
|
|
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": "
|
|
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
|
-
"
|
|
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-
|
|
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.
|
|
3
|
+
Version: 2.3.7
|
|
4
4
|
Summary: Governed Microsoft Graph agent and MCP server
|
|
5
|
-
Author-email:
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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 = [ "
|
|
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 = "
|
|
22
|
-
email = "maintainers@
|
|
21
|
+
name = "Repository Maintainers"
|
|
22
|
+
email = "maintainers@knuckles.team"
|
|
23
23
|
|
|
24
24
|
[project.optional-dependencies]
|
|
25
|
-
mcp = [ "
|
|
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 (
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
)
|
|
25
|
-
|
|
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
|
|
@@ -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(
|
|
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
|
|
88
|
-
assert
|
|
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
|
|
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 +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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/control-plane/control-plane.sample.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/Install-WindowsCompanion.ps1
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/Uninstall-WindowsCompanion.ps1
RENAMED
|
File without changes
|
{microsoft_agent-2.3.6 → microsoft_agent-2.3.7}/deployment/windows/windows-companion.sample.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|