microsoft-agent 2.3.8__tar.gz → 2.4.0__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.8/microsoft_agent.egg-info → microsoft_agent-2.4.0}/PKG-INFO +7 -11
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/README.md +4 -8
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/docs/authentication.md +3 -3
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/docs/integrations.md +2 -1
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/docs/office-addin.md +2 -2
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/docs/usage.md +2 -2
- microsoft_agent-2.4.0/microsoft_agent/__init__.py +28 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/api/api_client_admin.py +6 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/api/api_client_base.py +4 -3
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/api/api_client_directory.py +2 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/api/api_client_drive.py +3 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/api/api_client_other.py +7 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/config_cli.py +0 -1
- microsoft_agent-2.4.0/microsoft_agent/connector_contracts.py +5370 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/integration_tools.py +59 -16
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/intune_service.py +0 -6
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/mcp_config.json +0 -1
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/mcp_server.py +23 -123
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/office_bridge.py +12 -1
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/ontology/certification.json +3 -3
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/ontology/microsoft.ttl +7 -3
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/ontology/shapes/connector.shacl.ttl +2 -2
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/power_platform.py +2 -2
- microsoft_agent-2.4.0/microsoft_agent/prompts/microsoft-agent-operator.json +441 -0
- microsoft_agent-2.4.0/microsoft_agent/prompts/microsoft-collaboration-manager.json +139 -0
- microsoft_agent-2.4.0/microsoft_agent/prompts/microsoft-document-author.json +82 -0
- microsoft_agent-2.4.0/microsoft_agent/prompts/microsoft-endpoint-engineer.json +107 -0
- microsoft_agent-2.4.0/microsoft_agent/prompts/microsoft-identity-administrator.json +151 -0
- microsoft_agent-2.4.0/microsoft_agent/prompts/microsoft-mailbox-coordinator.json +113 -0
- microsoft_agent-2.4.0/microsoft_agent/prompts/microsoft-security-analyst.json +87 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/settings.py +0 -4
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/skills/microsoft-agent-development/SKILL.md +4 -4
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/skills/microsoft-agent-operations/SKILL.md +9 -3
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-calendar-scheduling/SKILL.md +72 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-contacts/SKILL.md +45 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-document-authoring/SKILL.md +60 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-education-booking/SKILL.md +59 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-endpoint-management/SKILL.md +67 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-files-sharepoint/SKILL.md +79 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-graph-integration/SKILL.md +58 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-identity-directory/SKILL.md +140 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-mail-operations/SKILL.md +70 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-office-apps/SKILL.md +77 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-power-platform/SKILL.md +55 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-security-operations/SKILL.md +78 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-service-reports/SKILL.md +51 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-session-management/SKILL.md +51 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-teams-messaging/SKILL.md +74 -0
- microsoft_agent-2.4.0/microsoft_agent/skills/microsoft-universal-print/SKILL.md +51 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/tool_policy.py +6 -29
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/windows_companion.py +2 -2
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0/microsoft_agent.egg-info}/PKG-INFO +7 -11
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent.egg-info/SOURCES.txt +22 -39
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent.egg-info/requires.txt +2 -2
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/pyproject.toml +3 -3
- microsoft_agent-2.4.0/tests/test_destructive_declaration.py +83 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_graph_reliability.py +14 -64
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_graph_transport.py +3 -3
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_intune_service.py +2 -19
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_mcp_comprehensive.py +0 -63
- microsoft_agent-2.4.0/tests/test_mcp_server.py +64 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_onenote_sharepoint_print.py +11 -17
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_sdk_centralization.py +2 -2
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_settings_and_policy.py +33 -10
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_transport_migration.py +2 -2
- microsoft_agent-2.3.8/microsoft_agent/__init__.py +0 -24
- microsoft_agent-2.3.8/microsoft_agent/mcp/__init__.py +0 -83
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_admin.py +0 -59
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_agreements.py +0 -63
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_applications.py +0 -63
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_audit.py +0 -54
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_auth.py +0 -56
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_calendar.py +0 -62
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_chat.py +0 -50
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_communications.py +0 -61
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_connections.py +0 -69
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_contacts.py +0 -61
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_devices.py +0 -58
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_directory.py +0 -61
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_domains.py +0 -55
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_education.py +0 -55
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_employee_experience.py +0 -62
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_files.py +0 -84
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_groups.py +0 -60
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_identity.py +0 -59
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_mail.py +0 -77
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_meta.py +0 -50
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_notes.py +0 -52
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_organization.py +0 -56
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_places.py +0 -56
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_policies.py +0 -54
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_print.py +0 -57
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_privacy.py +0 -64
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_reports.py +0 -55
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_search.py +0 -52
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_security.py +0 -66
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_sites.py +0 -65
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_solutions.py +0 -54
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_storage.py +0 -64
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_subscriptions.py +0 -56
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_tasks.py +0 -58
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_teams.py +0 -52
- microsoft_agent-2.3.8/microsoft_agent/mcp/mcp_user.py +0 -48
- microsoft_agent-2.3.8/microsoft_agent/prompts/collaboration_specialist.json +0 -36
- microsoft_agent-2.3.8/microsoft_agent/skills/microsoft-calendar-scheduling/SKILL.md +0 -81
- microsoft_agent-2.3.8/microsoft_agent/skills/microsoft-mail-operations/SKILL.md +0 -92
- microsoft_agent-2.3.8/microsoft_agent/skills/microsoft-teams-messaging/SKILL.md +0 -82
- microsoft_agent-2.3.8/tests/test_bug_cx_046_ctx_info_awaited.py +0 -48
- microsoft_agent-2.3.8/tests/test_mcp_server.py +0 -93
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/LICENSE +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/MANIFEST.in +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/control-plane/README.md +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/control-plane/control-plane.sample.json +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/control-plane/nginx/windows-control-plane.conf +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/control-plane/systemd/microsoft-windows-control-plane.env +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/control-plane/systemd/microsoft-windows-control-plane.service +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/entra/New-MicrosoftAgentApp.ps1 +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/entra/New-WindowsControlPlaneEntraResources.ps1 +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/entra/README.md +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/entra/permission-profiles.json +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/integrations.example.json +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/windows/Install-WindowsCompanion.ps1 +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/windows/README.md +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/windows/Run-WindowsCompanion.ps1 +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/windows/Test-WindowsCompanionDeployment.ps1 +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/windows/Uninstall-WindowsCompanion.ps1 +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/deployment/windows/windows-companion.sample.json +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/docs/concepts.md +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/docs/configuration.md +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/docs/deployment.md +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/docs/enrollment-checklist.md +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/docs/index.md +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/docs/installation.md +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/docs/overview.md +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/docs/windows-companion.md +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/__main__.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/_version.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/api/__init__.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/api/_graph_models.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/api/api_client_apps.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/api/api_client_calendar.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/api/api_client_mail.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/api/api_client_system.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/api_client.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/auth.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/connector_sources.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/connectors/__init__.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/credential_adapter.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/document_service.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/graph_file_service.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/integration_adapters.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/integration_auth.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/integration_config.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/kg_ingest.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/ontology/__init__.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/ontology/fixtures/records.json +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/ontology/mappings/source.yaml +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/ontology/migrations/manifest.json +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/prompts/__init__.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/skills/__init__.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/skills/microsoft-agent-operations/agents/openai.yaml +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/skills/microsoft-agent-operations/references/catalog.md +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/universal_print.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/windows_companion_service.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/windows_control_plane.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/windows_control_plane_service.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent/windows_runtime.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent.egg-info/dependency_links.txt +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent.egg-info/entry_points.txt +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/microsoft_agent.egg-info/top_level.txt +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/README.md +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/manifest.xml +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/package-lock.json +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/package.json +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/public/assets/icon.png.b64 +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/public/assets/icon.svg +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/public/config.json +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/public/styles.css +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/public/taskpane.html +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/scripts/validate_manifest.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/src/backend-client.ts +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/src/office-bridge.ts +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/src/office-operations.ts +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/src/taskpane.ts +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/src/validation.ts +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/tests/backend-client.test.ts +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/tests/office-bridge.test.ts +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/tests/validation.test.ts +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/tsconfig.json +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/vitest.config.ts +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/office_addin/webpack.config.cjs +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/setup.cfg +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_api_client_extended.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_auth.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_auth_coverage.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_config_cli.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_credential_adapter.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_default_content_surfaces.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_document_service.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_generate_code.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_graph_file_service.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_init_dynamics.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_integration_adapters.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_integration_auth.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_integration_config_and_tools.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_kg_ingest.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_main.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_office_bridge.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_office_manifest.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_placeholder.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_power_platform.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_publication_workflow.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_startup.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_teams_reliability.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_transport_tls.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_windows_companion.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_windows_control_plane.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_windows_control_plane_service.py +0 -0
- {microsoft_agent-2.3.8 → microsoft_agent-2.4.0}/tests/test_windows_runtime.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: microsoft-agent
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.4.0
|
|
4
4
|
Summary: Governed Microsoft Graph agent and MCP server
|
|
5
5
|
Author-email: Repository Maintainers <maintainers@knuckles.team>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -11,7 +11,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
11
11
|
Requires-Python: >=3.12
|
|
12
12
|
Description-Content-Type: text/markdown
|
|
13
13
|
License-File: LICENSE
|
|
14
|
-
Requires-Dist: scion-sdk[mcp]<0.
|
|
14
|
+
Requires-Dist: scion-sdk[mcp]<0.11,>=0.10.2
|
|
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: scion-sdk[mcp]<0.
|
|
22
|
+
Requires-Dist: scion-sdk[mcp]<0.11,>=0.10.2; 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"
|
|
@@ -147,7 +147,6 @@ tokens remain in memory and are not written to plaintext files.
|
|
|
147
147
|
| `MICROSOFT_GRAPH_SCOPES` | — | |
|
|
148
148
|
| `MICROSOFT_ENABLED_TOOL_GROUPS` | `misc,auth,meta,mail,files,calendar,notes,tasks,contacts,user,chat,teams,sites,search,groups,communications,documents,power_platform,windows,intune` | Tools are registered, but side effects remain disabled until explicitly enabled. |
|
|
149
149
|
| `MICROSOFT_ALLOW_WRITES` | `false` | |
|
|
150
|
-
| `MICROSOFT_ALLOW_DESTRUCTIVE` | `false` | |
|
|
151
150
|
| `MICROSOFT_INGESTION_PSEUDONYMIZATION_KEY_REF` | — | Required only for graph projection/ingestion. Resolve from AgentConfig or a secret store; use at least 32 bytes and never reuse an identity credential. |
|
|
152
151
|
| `MICROSOFT_INTEGRATIONS_CONFIG_PATH` | — | Complex Power Platform, Intune, and Windows companion allowlists. |
|
|
153
152
|
| `MICROSOFT_DOCUMENT_ARTIFACT_ROOT` | — | |
|
|
@@ -332,13 +331,13 @@ and MCP caller identity are separate boundaries and both must be configured.
|
|
|
332
331
|
| `microsoft_tasks` | `TASKSTOOL` | Manage microsoft tasks operations. |
|
|
333
332
|
| `microsoft_teams` | `TEAMSTOOL` | Manage microsoft teams operations. |
|
|
334
333
|
| `microsoft_user` | `USERTOOL` | Manage microsoft user operations. |
|
|
335
|
-
| `reboot_intune_device` | `INTUNETOOL` | Immediately reboot an allowlisted Intune device after
|
|
334
|
+
| `reboot_intune_device` | `INTUNETOOL` | Immediately reboot an allowlisted Intune device after time-bound confirmation. |
|
|
336
335
|
| `remote_lock_intune_device` | `INTUNETOOL` | Remotely lock an allowlisted Intune device after time-bound confirmation bound to that device and action. |
|
|
337
336
|
| `replace_word_placeholders_in_office` | `DOCUMENTSTOOL` | Replace a literal placeholder throughout a paired, open Word document. |
|
|
338
337
|
| `run_power_automate_desktop_flow` | `POWER_PLATFORMTOOL` | Run one allowlisted Power Automate desktop flow using its fixed Dataverse connection or connection reference. |
|
|
339
338
|
| `run_power_automate_flow` | `POWER_PLATFORMTOOL` | Invoke one named, allowlisted, OAuth-protected Power Automate HTTP trigger. The caller cannot supply a trigger URL. |
|
|
340
339
|
| `scan_intune_device_with_defender` | `INTUNETOOL` | Request a quick or full Microsoft Defender scan on an allowlisted Intune device with time-bound confirmation. |
|
|
341
|
-
| `shut_down_intune_device` | `INTUNETOOL` | Immediately shut down an allowlisted Intune device after
|
|
340
|
+
| `shut_down_intune_device` | `INTUNETOOL` | Immediately shut down an allowlisted Intune device after time-bound confirmation. |
|
|
342
341
|
| `submit_windows_action` | `WINDOWS_COMPANIONTOOL` | Submit one typed allowlisted laptop action through the authenticated outbound relay. Arbitrary shell, process, and URL execution are absent. |
|
|
343
342
|
| `sync_intune_device` | `INTUNETOOL` | Request an Intune sync for an allowlisted device. Time-bound confirmation evidence bound to the action and device is required. |
|
|
344
343
|
| `write_word_selection_in_office` | `DOCUMENTSTOOL` | Write bounded text at the selection in a paired, open Word task pane. |
|
|
@@ -626,8 +625,8 @@ _79 action-routed tool(s) · 268 verbose 1:1 tool(s). Each is enabled unless its
|
|
|
626
625
|
|
|
627
626
|
Every routed action passes the fail-closed tool policy. Reads are permitted by
|
|
628
627
|
default; unknown actions are treated as writes. Writes require
|
|
629
|
-
`MICROSOFT_ALLOW_WRITES=true`, and destructive actions also
|
|
630
|
-
`
|
|
628
|
+
`MICROSOFT_ALLOW_WRITES=true`, and destructive actions also need a live
|
|
629
|
+
confirmation (the gateway's approval or the `confirm` argument).
|
|
631
630
|
|
|
632
631
|
## MCP client configuration
|
|
633
632
|
|
|
@@ -675,7 +674,6 @@ default; unknown actions are treated as writes. Writes require
|
|
|
675
674
|
"KGTOOL": "true",
|
|
676
675
|
"MAILTOOL": "true",
|
|
677
676
|
"METATOOL": "true",
|
|
678
|
-
"MICROSOFT_ALLOW_DESTRUCTIVE": "false",
|
|
679
677
|
"MICROSOFT_ALLOW_DEVICE_CODE": "false",
|
|
680
678
|
"MICROSOFT_ALLOW_WRITES": "false",
|
|
681
679
|
"MICROSOFT_AUTHORITY_HOST": "https://login.microsoftonline.com",
|
|
@@ -760,7 +758,6 @@ own runtime secret boundary.
|
|
|
760
758
|
"KGTOOL": "true",
|
|
761
759
|
"MAILTOOL": "true",
|
|
762
760
|
"METATOOL": "true",
|
|
763
|
-
"MICROSOFT_ALLOW_DESTRUCTIVE": "false",
|
|
764
761
|
"MICROSOFT_ALLOW_DEVICE_CODE": "false",
|
|
765
762
|
"MICROSOFT_ALLOW_WRITES": "false",
|
|
766
763
|
"MICROSOFT_AUTHORITY_HOST": "https://login.microsoftonline.com",
|
|
@@ -844,7 +841,6 @@ docker run -i --rm \
|
|
|
844
841
|
-e KGTOOL=true \
|
|
845
842
|
-e MAILTOOL=true \
|
|
846
843
|
-e METATOOL=true \
|
|
847
|
-
-e MICROSOFT_ALLOW_DESTRUCTIVE=false \
|
|
848
844
|
-e MICROSOFT_ALLOW_DEVICE_CODE=false \
|
|
849
845
|
-e MICROSOFT_ALLOW_WRITES=false \
|
|
850
846
|
-e MICROSOFT_AUTHORITY_HOST=https://login.microsoftonline.com \
|
|
@@ -79,7 +79,6 @@ tokens remain in memory and are not written to plaintext files.
|
|
|
79
79
|
| `MICROSOFT_GRAPH_SCOPES` | — | |
|
|
80
80
|
| `MICROSOFT_ENABLED_TOOL_GROUPS` | `misc,auth,meta,mail,files,calendar,notes,tasks,contacts,user,chat,teams,sites,search,groups,communications,documents,power_platform,windows,intune` | Tools are registered, but side effects remain disabled until explicitly enabled. |
|
|
81
81
|
| `MICROSOFT_ALLOW_WRITES` | `false` | |
|
|
82
|
-
| `MICROSOFT_ALLOW_DESTRUCTIVE` | `false` | |
|
|
83
82
|
| `MICROSOFT_INGESTION_PSEUDONYMIZATION_KEY_REF` | — | Required only for graph projection/ingestion. Resolve from AgentConfig or a secret store; use at least 32 bytes and never reuse an identity credential. |
|
|
84
83
|
| `MICROSOFT_INTEGRATIONS_CONFIG_PATH` | — | Complex Power Platform, Intune, and Windows companion allowlists. |
|
|
85
84
|
| `MICROSOFT_DOCUMENT_ARTIFACT_ROOT` | — | |
|
|
@@ -264,13 +263,13 @@ and MCP caller identity are separate boundaries and both must be configured.
|
|
|
264
263
|
| `microsoft_tasks` | `TASKSTOOL` | Manage microsoft tasks operations. |
|
|
265
264
|
| `microsoft_teams` | `TEAMSTOOL` | Manage microsoft teams operations. |
|
|
266
265
|
| `microsoft_user` | `USERTOOL` | Manage microsoft user operations. |
|
|
267
|
-
| `reboot_intune_device` | `INTUNETOOL` | Immediately reboot an allowlisted Intune device after
|
|
266
|
+
| `reboot_intune_device` | `INTUNETOOL` | Immediately reboot an allowlisted Intune device after time-bound confirmation. |
|
|
268
267
|
| `remote_lock_intune_device` | `INTUNETOOL` | Remotely lock an allowlisted Intune device after time-bound confirmation bound to that device and action. |
|
|
269
268
|
| `replace_word_placeholders_in_office` | `DOCUMENTSTOOL` | Replace a literal placeholder throughout a paired, open Word document. |
|
|
270
269
|
| `run_power_automate_desktop_flow` | `POWER_PLATFORMTOOL` | Run one allowlisted Power Automate desktop flow using its fixed Dataverse connection or connection reference. |
|
|
271
270
|
| `run_power_automate_flow` | `POWER_PLATFORMTOOL` | Invoke one named, allowlisted, OAuth-protected Power Automate HTTP trigger. The caller cannot supply a trigger URL. |
|
|
272
271
|
| `scan_intune_device_with_defender` | `INTUNETOOL` | Request a quick or full Microsoft Defender scan on an allowlisted Intune device with time-bound confirmation. |
|
|
273
|
-
| `shut_down_intune_device` | `INTUNETOOL` | Immediately shut down an allowlisted Intune device after
|
|
272
|
+
| `shut_down_intune_device` | `INTUNETOOL` | Immediately shut down an allowlisted Intune device after time-bound confirmation. |
|
|
274
273
|
| `submit_windows_action` | `WINDOWS_COMPANIONTOOL` | Submit one typed allowlisted laptop action through the authenticated outbound relay. Arbitrary shell, process, and URL execution are absent. |
|
|
275
274
|
| `sync_intune_device` | `INTUNETOOL` | Request an Intune sync for an allowlisted device. Time-bound confirmation evidence bound to the action and device is required. |
|
|
276
275
|
| `write_word_selection_in_office` | `DOCUMENTSTOOL` | Write bounded text at the selection in a paired, open Word task pane. |
|
|
@@ -558,8 +557,8 @@ _79 action-routed tool(s) · 268 verbose 1:1 tool(s). Each is enabled unless its
|
|
|
558
557
|
|
|
559
558
|
Every routed action passes the fail-closed tool policy. Reads are permitted by
|
|
560
559
|
default; unknown actions are treated as writes. Writes require
|
|
561
|
-
`MICROSOFT_ALLOW_WRITES=true`, and destructive actions also
|
|
562
|
-
`
|
|
560
|
+
`MICROSOFT_ALLOW_WRITES=true`, and destructive actions also need a live
|
|
561
|
+
confirmation (the gateway's approval or the `confirm` argument).
|
|
563
562
|
|
|
564
563
|
## MCP client configuration
|
|
565
564
|
|
|
@@ -607,7 +606,6 @@ default; unknown actions are treated as writes. Writes require
|
|
|
607
606
|
"KGTOOL": "true",
|
|
608
607
|
"MAILTOOL": "true",
|
|
609
608
|
"METATOOL": "true",
|
|
610
|
-
"MICROSOFT_ALLOW_DESTRUCTIVE": "false",
|
|
611
609
|
"MICROSOFT_ALLOW_DEVICE_CODE": "false",
|
|
612
610
|
"MICROSOFT_ALLOW_WRITES": "false",
|
|
613
611
|
"MICROSOFT_AUTHORITY_HOST": "https://login.microsoftonline.com",
|
|
@@ -692,7 +690,6 @@ own runtime secret boundary.
|
|
|
692
690
|
"KGTOOL": "true",
|
|
693
691
|
"MAILTOOL": "true",
|
|
694
692
|
"METATOOL": "true",
|
|
695
|
-
"MICROSOFT_ALLOW_DESTRUCTIVE": "false",
|
|
696
693
|
"MICROSOFT_ALLOW_DEVICE_CODE": "false",
|
|
697
694
|
"MICROSOFT_ALLOW_WRITES": "false",
|
|
698
695
|
"MICROSOFT_AUTHORITY_HOST": "https://login.microsoftonline.com",
|
|
@@ -776,7 +773,6 @@ docker run -i --rm \
|
|
|
776
773
|
-e KGTOOL=true \
|
|
777
774
|
-e MAILTOOL=true \
|
|
778
775
|
-e METATOOL=true \
|
|
779
|
-
-e MICROSOFT_ALLOW_DESTRUCTIVE=false \
|
|
780
776
|
-e MICROSOFT_ALLOW_DEVICE_CODE=false \
|
|
781
777
|
-e MICROSOFT_ALLOW_WRITES=false \
|
|
782
778
|
-e MICROSOFT_AUTHORITY_HOST=https://login.microsoftonline.com \
|
|
@@ -103,12 +103,12 @@ server is currently allowed to invoke:
|
|
|
103
103
|
|
|
104
104
|
```text
|
|
105
105
|
MICROSOFT_ALLOW_WRITES=false
|
|
106
|
-
MICROSOFT_ALLOW_DESTRUCTIVE=false
|
|
107
106
|
```
|
|
108
107
|
|
|
109
|
-
Reads work with
|
|
108
|
+
Reads work with writes disabled. Sends, creates, edits, uploads, flow runs,
|
|
110
109
|
and remote actions require writes. Deletes, wipes, retirements, immediate
|
|
111
|
-
reboots, shutdowns, and other destructive tools require
|
|
110
|
+
reboots, shutdowns, and other destructive tools require writes and also a live
|
|
111
|
+
confirmation (the gateway's approval or the `confirm` argument). Intune and
|
|
112
112
|
Windows companion actions also enforce per-device/action allowlists and
|
|
113
113
|
time-bound confirmation evidence inside their service layer.
|
|
114
114
|
|
|
@@ -77,7 +77,8 @@ protected.
|
|
|
77
77
|
Intune configuration requires at least one managed-device UUID and an explicit
|
|
78
78
|
action allowlist. Every mutation requires evidence bound to the device, action,
|
|
79
79
|
correlation ID, idempotency key, approver, reason, and a short expiration. Reboot
|
|
80
|
-
and shutdown also
|
|
80
|
+
and shutdown also need a live confirmation (the gateway's approval or the
|
|
81
|
+
`confirm` argument).
|
|
81
82
|
|
|
82
83
|
The service uses only Microsoft Graph v1.0. `rotateBitLockerKeys` is visible in
|
|
83
84
|
the capability report as unsupported because Microsoft currently documents it
|
|
@@ -27,8 +27,8 @@ URLs, or an open-ended action name.
|
|
|
27
27
|
|
|
28
28
|
1. Start the MCP server over HTTPS and set
|
|
29
29
|
`MICROSOFT_OFFICE_ADDIN_ORIGINS` to the task pane's exact HTTPS origin.
|
|
30
|
-
2. Enable `documents` and `MICROSOFT_ALLOW_WRITES`.
|
|
31
|
-
|
|
30
|
+
2. Enable `documents` and `MICROSOFT_ALLOW_WRITES`. Deleting a slide also needs
|
|
31
|
+
a live confirmation (the gateway's approval or the `confirm` argument).
|
|
32
32
|
3. Ask the agent to call `create_office_pairing` with `Word` or `PowerPoint`
|
|
33
33
|
and a recognizable window label.
|
|
34
34
|
4. Paste the returned one-time secret into **Agent pairing** in that intended
|
|
@@ -23,8 +23,8 @@ The installed provider families cover:
|
|
|
23
23
|
|
|
24
24
|
Every routed action crosses the fail-closed Microsoft tool policy. Read actions are
|
|
25
25
|
available by default. Unknown actions are classified as writes. Non-destructive
|
|
26
|
-
writes require `MICROSOFT_ALLOW_WRITES=true`; destructive actions also
|
|
27
|
-
|
|
26
|
+
writes require `MICROSOFT_ALLOW_WRITES=true`; destructive actions also need a live
|
|
27
|
+
confirmation (the gateway's approval or the `confirm` argument).
|
|
28
28
|
|
|
29
29
|
`list_microsoft_ingestion_projection` returns only keyed opaque node identifiers,
|
|
30
30
|
types, and relationships. Arbora validates the signed source manifest and
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"""Microsoft Agent.
|
|
2
|
+
|
|
3
|
+
CONCEPT:AU-ECO.mcp.fastmcp-middleware
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from scion_sdk.connector import Connector
|
|
7
|
+
from scion_sdk.connector_hooks import RegistrationContext
|
|
8
|
+
|
|
9
|
+
from microsoft_agent._version import __version__
|
|
10
|
+
from microsoft_agent.api_client import MicrosoftGraphApi
|
|
11
|
+
from microsoft_agent.auth import get_client_dependency
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def _register_extras(context: RegistrationContext) -> None:
|
|
15
|
+
"""Register the non-Graph tools and the side-effect policy through the SDK hook."""
|
|
16
|
+
from microsoft_agent.mcp_server import register_extra_surface
|
|
17
|
+
|
|
18
|
+
register_extra_surface(context.server)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
connector = Connector(
|
|
22
|
+
instructions="microsoft-agent MCP Server: one typed tool per Microsoft Graph operation.",
|
|
23
|
+
api=MicrosoftGraphApi,
|
|
24
|
+
get_client=get_client_dependency,
|
|
25
|
+
extra_registrations=(_register_extras,),
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
__all__ = ["__version__", "connector"]
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from typing import Any
|
|
2
2
|
|
|
3
|
+
from scion_sdk.mcp.destructive import destructive_operation
|
|
4
|
+
|
|
3
5
|
from microsoft_agent.api._graph_models import (
|
|
4
6
|
graph_model_from_dict,
|
|
5
7
|
)
|
|
@@ -137,6 +139,7 @@ class MicrosoftGraphApiAdmin(MicrosoftGraphApiBase):
|
|
|
137
139
|
print(f"Operation failed: {type(e).__name__}")
|
|
138
140
|
return {"error": "Operation failed"}
|
|
139
141
|
|
|
142
|
+
@destructive_operation
|
|
140
143
|
async def update_organization(
|
|
141
144
|
self, org_id: str, data: dict[str, Any], params: dict | None = None
|
|
142
145
|
) -> dict[str, Any]:
|
|
@@ -555,6 +558,7 @@ class MicrosoftGraphApiAdmin(MicrosoftGraphApiBase):
|
|
|
555
558
|
print(f"Operation failed: {type(e).__name__}")
|
|
556
559
|
return {"error": "Operation failed"}
|
|
557
560
|
|
|
561
|
+
@destructive_operation
|
|
558
562
|
async def create_conditional_access_policy(
|
|
559
563
|
self, data: dict[str, Any], params: dict | None = None
|
|
560
564
|
) -> dict[str, Any]:
|
|
@@ -582,6 +586,7 @@ class MicrosoftGraphApiAdmin(MicrosoftGraphApiBase):
|
|
|
582
586
|
print(f"Operation failed: {type(e).__name__}")
|
|
583
587
|
return {"error": "Operation failed"}
|
|
584
588
|
|
|
589
|
+
@destructive_operation
|
|
585
590
|
async def update_conditional_access_policy(
|
|
586
591
|
self, policy_id: str, data: dict[str, Any], params: dict | None = None
|
|
587
592
|
) -> dict[str, Any]:
|
|
@@ -919,6 +924,7 @@ class MicrosoftGraphApiAdmin(MicrosoftGraphApiBase):
|
|
|
919
924
|
print(f"Operation failed: {type(e).__name__}")
|
|
920
925
|
return {"error": "Operation failed"}
|
|
921
926
|
|
|
927
|
+
@destructive_operation
|
|
922
928
|
async def create_role_assignment(
|
|
923
929
|
self, data: dict[str, Any], params: dict | None = None
|
|
924
930
|
) -> dict[str, Any]:
|
|
@@ -8,7 +8,7 @@ from kiota_authentication_azure.azure_identity_authentication_provider import (
|
|
|
8
8
|
from msgraph import GraphServiceClient
|
|
9
9
|
from msgraph.graph_request_adapter import GraphRequestAdapter
|
|
10
10
|
from scion_sdk.exceptions import AuthError
|
|
11
|
-
from scion_sdk.http.client import
|
|
11
|
+
from scion_sdk.http.client import build_http_client
|
|
12
12
|
from scion_sdk.http.options import HttpClientOptions
|
|
13
13
|
from scion_sdk.http.retry import RetryPolicy
|
|
14
14
|
from scion_sdk.tls.profile import ResolvedTLSProfile
|
|
@@ -44,7 +44,7 @@ class MicrosoftGraphApiBase(ABC):
|
|
|
44
44
|
scopes=auth_manager.scopes,
|
|
45
45
|
allowed_hosts=[endpoint_host],
|
|
46
46
|
)
|
|
47
|
-
self._http_client =
|
|
47
|
+
self._http_client = build_http_client(
|
|
48
48
|
HttpClientOptions(
|
|
49
49
|
base_url=auth_manager.graph_base_url,
|
|
50
50
|
timeout=httpx.Timeout(30.0),
|
|
@@ -55,7 +55,8 @@ class MicrosoftGraphApiBase(ABC):
|
|
|
55
55
|
max_keepalive_connections=16,
|
|
56
56
|
),
|
|
57
57
|
pin_egress=True,
|
|
58
|
-
)
|
|
58
|
+
),
|
|
59
|
+
async_=True,
|
|
59
60
|
)
|
|
60
61
|
except Exception:
|
|
61
62
|
self.tls_profile.cleanup()
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from typing import Any
|
|
2
2
|
|
|
3
3
|
from msgraph.generated.users.users_request_builder import UsersRequestBuilder
|
|
4
|
+
from scion_sdk.mcp.destructive import destructive_operation
|
|
4
5
|
|
|
5
6
|
from microsoft_agent.api._graph_models import (
|
|
6
7
|
graph_model_from_dict,
|
|
@@ -639,6 +640,7 @@ class MicrosoftGraphApiDirectory(MicrosoftGraphApiBase):
|
|
|
639
640
|
print(f"Operation failed: {type(e).__name__}")
|
|
640
641
|
return {"error": "Operation failed"}
|
|
641
642
|
|
|
643
|
+
@destructive_operation
|
|
642
644
|
async def dismiss_risky_user(
|
|
643
645
|
self, user_id: str, params: dict | None = None
|
|
644
646
|
) -> dict[str, Any]:
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from typing import Any
|
|
2
2
|
|
|
3
|
+
from scion_sdk.mcp.destructive import destructive_operation
|
|
4
|
+
|
|
3
5
|
from microsoft_agent.api._graph_models import (
|
|
4
6
|
comma_separated_values,
|
|
5
7
|
graph_model_from_dict,
|
|
@@ -581,6 +583,7 @@ class MicrosoftGraphApiDrive(MicrosoftGraphApiBase):
|
|
|
581
583
|
print(f"Operation failed: {type(e).__name__}")
|
|
582
584
|
return {"error": "Operation failed"}
|
|
583
585
|
|
|
586
|
+
@destructive_operation
|
|
584
587
|
async def update_admin_sharepoint(
|
|
585
588
|
self, data: dict[str, Any], params: dict | None = None
|
|
586
589
|
) -> dict[str, Any]:
|
|
@@ -5,6 +5,8 @@ from typing import TYPE_CHECKING, Any
|
|
|
5
5
|
if TYPE_CHECKING:
|
|
6
6
|
from microsoft_agent.power_platform import AsyncHttpTransport
|
|
7
7
|
|
|
8
|
+
from scion_sdk.mcp.destructive import destructive_operation
|
|
9
|
+
|
|
8
10
|
from microsoft_agent.api._graph_models import (
|
|
9
11
|
decode_graph_base64,
|
|
10
12
|
graph_model_from_dict,
|
|
@@ -482,6 +484,7 @@ class MicrosoftGraphApiOther(MicrosoftGraphApiBase):
|
|
|
482
484
|
print(f"Operation failed: {type(e).__name__}")
|
|
483
485
|
return {"error": "Operation failed"}
|
|
484
486
|
|
|
487
|
+
@destructive_operation
|
|
485
488
|
async def create_application(
|
|
486
489
|
self, data: dict[str, Any], params: dict | None = None
|
|
487
490
|
) -> dict[str, Any]:
|
|
@@ -553,6 +556,7 @@ class MicrosoftGraphApiOther(MicrosoftGraphApiBase):
|
|
|
553
556
|
print(f"Operation failed: {type(e).__name__}")
|
|
554
557
|
return {"error": "Operation failed"}
|
|
555
558
|
|
|
559
|
+
@destructive_operation
|
|
556
560
|
async def add_application_password(
|
|
557
561
|
self, app_id: str, data: dict[str, Any], params: dict | None = None
|
|
558
562
|
) -> dict[str, Any]:
|
|
@@ -657,6 +661,7 @@ class MicrosoftGraphApiOther(MicrosoftGraphApiBase):
|
|
|
657
661
|
print(f"Operation failed: {type(e).__name__}")
|
|
658
662
|
return {"error": "Operation failed"}
|
|
659
663
|
|
|
664
|
+
@destructive_operation
|
|
660
665
|
async def create_service_principal(
|
|
661
666
|
self, data: dict[str, Any], params: dict | None = None
|
|
662
667
|
) -> dict[str, Any]:
|
|
@@ -1069,6 +1074,7 @@ class MicrosoftGraphApiOther(MicrosoftGraphApiBase):
|
|
|
1069
1074
|
print(f"Operation failed: {type(e).__name__}")
|
|
1070
1075
|
return {"error": "Operation failed"}
|
|
1071
1076
|
|
|
1077
|
+
@destructive_operation
|
|
1072
1078
|
async def wipe_managed_device(
|
|
1073
1079
|
self, device_id: str, params: dict | None = None
|
|
1074
1080
|
) -> dict[str, Any]:
|
|
@@ -1094,6 +1100,7 @@ class MicrosoftGraphApiOther(MicrosoftGraphApiBase):
|
|
|
1094
1100
|
print(f"Operation failed: {type(e).__name__}")
|
|
1095
1101
|
return {"error": "Operation failed"}
|
|
1096
1102
|
|
|
1103
|
+
@destructive_operation
|
|
1097
1104
|
async def retire_managed_device(
|
|
1098
1105
|
self, device_id: str, params: dict | None = None
|
|
1099
1106
|
) -> dict[str, Any]:
|
|
@@ -39,7 +39,6 @@ def configuration_report() -> dict[str, Any]:
|
|
|
39
39
|
},
|
|
40
40
|
"policy": {
|
|
41
41
|
"writes_enabled": settings.allow_write_tools,
|
|
42
|
-
"destructive_enabled": settings.allow_destructive_tools,
|
|
43
42
|
"enabled_tool_groups": list(settings.enabled_tool_groups),
|
|
44
43
|
},
|
|
45
44
|
"documents": get_document_capabilities().model_dump(mode="json"),
|