scalekit-sdk-python 2.22.0__tar.gz → 2.24.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.
- {scalekit_sdk_python-2.22.0/scalekit_sdk_python.egg-info → scalekit_sdk_python-2.24.0}/PKG-INFO +1 -1
- scalekit_sdk_python-2.24.0/scalekit/_convert.py +163 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/_version.py +1 -1
- scalekit_sdk_python-2.24.0/scalekit/actions/__init__.py +112 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/actions.py +22 -3
- scalekit_sdk_python-2.24.0/scalekit/actions/models/triggers.py +1267 -0
- scalekit_sdk_python-2.24.0/scalekit/actions/triggers.py +1135 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/types.py +98 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/client.py +8 -2
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/core.py +1 -1
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/resource.py +19 -5
- scalekit_sdk_python-2.24.0/scalekit/triggers.py +430 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/clients/clients_pb2.py +164 -162
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/clients/clients_pb2.pyi +4 -2
- scalekit_sdk_python-2.24.0/scalekit/v1/triggers/triggers_pb2.py +660 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/triggers/triggers_pb2.pyi +32 -14
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0/scalekit_sdk_python.egg-info}/PKG-INFO +1 -1
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit_sdk_python.egg-info/SOURCES.txt +5 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_actions.py +11 -14
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_resource.py +54 -0
- scalekit_sdk_python-2.24.0/tests/test_triggers_api.py +1467 -0
- scalekit_sdk_python-2.24.0/tests/test_triggers_api_live.py +400 -0
- scalekit_sdk_python-2.22.0/scalekit/actions/__init__.py +0 -14
- scalekit_sdk_python-2.22.0/scalekit/actions/triggers.py +0 -279
- scalekit_sdk_python-2.22.0/scalekit/v1/triggers/triggers_pb2.py +0 -642
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/LICENSE +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/README.md +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/buf/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/buf/validate/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/buf/validate/validate_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/buf/validate/validate_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/buf/validate/validate_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/pyproject.toml +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/_proxy_path.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/_resumable_upload.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/connections/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/connections/errors.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/connections/models.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/connections/service.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/frameworks/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/frameworks/google_adk.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/frameworks/langchain.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/frameworks/types/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/frameworks/types/google_adk_tool.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/frameworks/util.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/custom_provider.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/mcp_config.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/mcp_connection_auth_state.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/mcp_instance.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/requests/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/requests/create_connected_account_request.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/requests/create_custom_provider_request.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/requests/delete_custom_provider_request.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/requests/list_providers_request.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/requests/mcp_request.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/requests/tool_request.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/requests/update_connected_account_request.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/requests/update_custom_provider_request.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/create_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/create_custom_provider_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/create_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/create_mcp_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/create_mcp_session_token_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/delete_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/delete_custom_provider_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/delete_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/delete_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/ensure_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/execute_tool_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/get_connected_account_auth_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/get_mcp_instance_auth_state_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/get_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/get_mcp_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/list_connected_accounts_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/list_mcp_configs_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/list_mcp_connected_accounts_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/list_mcp_instances_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/list_providers_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/list_tools_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/magic_link_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/update_connected_account_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/update_custom_provider_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/update_mcp_config_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/update_mcp_instance_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/responses/verify_connected_account_user_response.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/tool_input_output.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/tool_mapping.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/trigger_event.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/models/upload_progress.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/actions/modifier.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/auth.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/common/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/common/_webhook_signature.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/common/exceptions.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/common/scalekit.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/common/user.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/connected_accounts.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/connection.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/constants/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/constants/user.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/directory.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/domain.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/events.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/frameworks/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/frameworks/django.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/frameworks/fastapi.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/frameworks/flask.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/m2m_client.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/mcp.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/middleware/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/middleware/csrf_state.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/middleware/protocol.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/middleware/session_crypto.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/middleware/session_manager.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/organization.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/passwordless.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/permissions.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/providers.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/role.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/sessions.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/token.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/tools.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/users.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/utils/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/utils/directory.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/agentkit_logs/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/agentkit_logs/agentkit_analytics_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/agentkit_logs/agentkit_logs_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auditlogs/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auditlogs/auditlogs_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auditlogs/auditlogs_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auditlogs/auditlogs_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auth/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auth/auth_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auth/auth_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auth/auth_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auth/passwordless_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auth/passwordless_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auth/passwordless_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auth/totp_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auth/totp_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auth/totp_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auth/webauthn_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auth/webauthn_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/auth/webauthn_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/billing/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/billing/billing_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/billing/billing_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/billing/billing_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/clients/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/clients/clients_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/commons/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/commons/commons_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/commons/commons_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/commons/commons_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/connected_accounts/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/connected_accounts/connected_accounts_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/connected_accounts/connected_accounts_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/connections/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/connections/connections_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/connections/connections_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/connections/connections_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/directories/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/directories/directories_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/directories/directories_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/directories/directories_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/domains/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/domains/domains_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/domains/domains_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/domains/domains_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/emails/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/emails/emails_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/emails/emails_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/emails/emails_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/environments/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/environments/environments_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/environments/environments_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/environments/environments_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/errdetails/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/errdetails/errdetails_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/errdetails/errdetails_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/errdetails/errdetails_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/events/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/events/events_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/events/events_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/events/events_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/gateway/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/gateway/gateway_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/gateway/gateway_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/gateway/gateway_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/interceptors/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/interceptors/interceptors_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/interceptors/interceptors_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/interceptors/interceptors_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/keys/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/keys/keys_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/keys/keys_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/keys/keys_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/logstreams/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/logstreams/logstreams_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/logstreams/logstreams_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/logstreams/logstreams_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/mcp/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/mcp/mcp_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/mcp/mcp_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/mcp/mcp_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/members/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/members/members_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/members/members_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/members/members_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/migrations/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/migrations/migrations_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/migrations/migrations_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/migrations/migrations_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/options/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/options/options_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/options/options_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/options/options_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/organizations/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/organizations/organizations_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/organizations/organizations_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/organizations/organizations_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/providers/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/providers/providers_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/providers/providers_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/providers/providers_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/roles/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/roles/roles_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/roles/roles_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/roles/roles_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/secrets/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/secrets/secrets_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/secrets/secrets_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/secrets/secrets_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/sessions/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/sessions/sessions_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/sessions/sessions_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/sessions/sessions_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/tokens/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/tokens/tokens_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/tokens/tokens_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/tokens/tokens_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/tools/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/tools/tools_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/tools/tools_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/tools/tools_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/triggers/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/triggers/triggers_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/user_attributes/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/user_attributes/user_attributes_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/user_attributes/user_attributes_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/user_attributes/user_attributes_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/users/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/users/users_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/users/users_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/users/users_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/webhooks/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/webhooks/webhooks_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/webhooks/webhooks_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/webhooks/webhooks_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/workspaces/__init__.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/workspaces/workspaces_pb2.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/workspaces/workspaces_pb2.pyi +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/v1/workspaces/workspaces_pb2_grpc.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit/webauthn.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit_sdk_python.egg-info/dependency_links.txt +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit_sdk_python.egg-info/requires.txt +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/scalekit_sdk_python.egg-info/top_level.txt +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/setup.cfg +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/setup.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_actions_list_connected_accounts_pagination.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_actions_request_path.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_actions_response_fields.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_agentkit_connections.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_call_timeout.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_connected_accounts.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_connection.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_directory.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_domain.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_events.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_http_timeout.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_keepalive_channel_options.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_list_connected_accounts_query_and_org_wide.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_login.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_m2m_client.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_mcp.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_mcp_connection_session_token.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_mcp_session_token_access_level.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_mcp_tool_exposure.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_middleware_csrf_state.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_middleware_django.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_middleware_fastapi.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_middleware_flask.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_middleware_session_crypto.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_middleware_session_manager.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_multi_issuer.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_org_roles.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_organization.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_organization_session_policy.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_organization_slug_logo.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_passwordless.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_permissions.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_providers.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_resumable_upload.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_resumable_upload_live.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_role_defaults_dependent.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_roles.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_sessions.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_sk819_retry_behavior.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_tokens.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_tools.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_transient_error_no_retry.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_trigger_events.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_user_roles_permissions.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_users.py +0 -0
- {scalekit_sdk_python-2.22.0 → scalekit_sdk_python-2.24.0}/tests/test_webauthn_credentials.py +0 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"""Private converters between protobuf values and SDK types.
|
|
2
|
+
|
|
3
|
+
One place for the rules every SDK-owned model follows: timestamps are read only when
|
|
4
|
+
the field is present and come out as timezone-aware UTC ``datetime``; inputs must be
|
|
5
|
+
timezone-aware; enum values the SDK does not know never raise; durations are
|
|
6
|
+
``timedelta``. Nothing here imports the rest of the SDK, so any module can use it.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import re
|
|
12
|
+
from collections.abc import Sequence
|
|
13
|
+
from datetime import date, datetime, timedelta, timezone
|
|
14
|
+
from enum import Enum
|
|
15
|
+
from typing import TypeVar
|
|
16
|
+
|
|
17
|
+
from google.protobuf.internal.enum_type_wrapper import EnumTypeWrapper
|
|
18
|
+
from google.protobuf.message import Message
|
|
19
|
+
from google.protobuf.timestamp_pb2 import Timestamp
|
|
20
|
+
|
|
21
|
+
__all__ = [
|
|
22
|
+
"date_to_str",
|
|
23
|
+
"datetime_to_timestamp",
|
|
24
|
+
"enum_from_proto",
|
|
25
|
+
"enum_to_proto",
|
|
26
|
+
"require",
|
|
27
|
+
"seconds_from_proto",
|
|
28
|
+
"str_list",
|
|
29
|
+
"timedelta_to_seconds",
|
|
30
|
+
"timestamp_from_proto",
|
|
31
|
+
]
|
|
32
|
+
|
|
33
|
+
_E = TypeVar("_E", bound=Enum)
|
|
34
|
+
_CAMEL_BOUNDARY = re.compile(r"(?<!^)(?=[A-Z])")
|
|
35
|
+
_ISO_DATE = re.compile(r"[0-9]{4}-[0-9]{2}-[0-9]{2}")
|
|
36
|
+
_ONE_SECOND = timedelta(seconds=1)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def require(name: str, value: object) -> None:
|
|
40
|
+
"""Raise ``ValueError`` when a required identifier is missing or empty."""
|
|
41
|
+
if value is None or value == "":
|
|
42
|
+
raise ValueError(f"{name} is required")
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def str_list(name: str, values: Sequence[str]) -> list[str]:
|
|
46
|
+
"""Copy ``values`` into a list, refusing a bare ``str`` (which would split into characters)."""
|
|
47
|
+
if isinstance(values, (str, bytes)):
|
|
48
|
+
raise TypeError(f"{name} must be a list of strings, not a single string")
|
|
49
|
+
return list(values)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def _enum_prefix(wrapper: EnumTypeWrapper) -> str:
|
|
53
|
+
"""``TriggerDeliveryStatus`` -> ``"TRIGGER_DELIVERY_STATUS_"``."""
|
|
54
|
+
return _CAMEL_BOUNDARY.sub("_", wrapper.DESCRIPTOR.name).upper() + "_"
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def enum_from_proto(enum_cls: type[_E], wrapper: EnumTypeWrapper, value: int) -> _E | str | None:
|
|
58
|
+
"""Convert a proto enum number to an SDK enum member.
|
|
59
|
+
|
|
60
|
+
``0`` (the ``*_UNSPECIFIED`` value) becomes ``None``. A value the generated code
|
|
61
|
+
knows is looked up by its name without the ``<ENUM_NAME>_`` prefix; when the SDK
|
|
62
|
+
enum has no such member, that name is returned as a plain ``str``. A number the
|
|
63
|
+
generated code does not know is returned as ``str(value)``. Never raises.
|
|
64
|
+
"""
|
|
65
|
+
if value == 0:
|
|
66
|
+
return None
|
|
67
|
+
try:
|
|
68
|
+
name: str = wrapper.Name(value)
|
|
69
|
+
except ValueError:
|
|
70
|
+
return str(value)
|
|
71
|
+
name = name.removeprefix(_enum_prefix(wrapper))
|
|
72
|
+
try:
|
|
73
|
+
return enum_cls[name]
|
|
74
|
+
except KeyError:
|
|
75
|
+
return name
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def enum_to_proto(wrapper: EnumTypeWrapper, value: Enum | str | int, field: str) -> int:
|
|
79
|
+
"""Encode an enum member, a value name or a raw number as a proto enum number.
|
|
80
|
+
|
|
81
|
+
Names are accepted with or without the ``<ENUM_NAME>_`` prefix. A raw ``int`` is
|
|
82
|
+
sent as is, so values newer than this SDK can still be sent. Raises ``ValueError``
|
|
83
|
+
for a name the generated code does not know (it cannot be encoded).
|
|
84
|
+
"""
|
|
85
|
+
if isinstance(value, bool):
|
|
86
|
+
raise TypeError(f"{field} must be an enum member, a name or an int, not bool")
|
|
87
|
+
if isinstance(value, Enum):
|
|
88
|
+
name = value.name
|
|
89
|
+
elif isinstance(value, str):
|
|
90
|
+
name = value
|
|
91
|
+
elif isinstance(value, int):
|
|
92
|
+
return value
|
|
93
|
+
else:
|
|
94
|
+
raise TypeError(f"{field} must be an enum member, a name or an int")
|
|
95
|
+
prefix = _enum_prefix(wrapper)
|
|
96
|
+
for candidate in (name, prefix + name):
|
|
97
|
+
try:
|
|
98
|
+
number: int = wrapper.Value(candidate)
|
|
99
|
+
except ValueError:
|
|
100
|
+
continue
|
|
101
|
+
return number
|
|
102
|
+
known = ", ".join(
|
|
103
|
+
v.name.removeprefix(prefix) for v in wrapper.DESCRIPTOR.values if v.number != 0
|
|
104
|
+
)
|
|
105
|
+
raise ValueError(f"unknown {field} {value!r}; expected one of: {known}, or an int")
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def timestamp_from_proto(message: Message, field: str) -> datetime | None:
|
|
109
|
+
"""Read a ``Timestamp`` field as aware UTC ``datetime``; ``None`` when it is unset."""
|
|
110
|
+
if not message.HasField(field):
|
|
111
|
+
return None
|
|
112
|
+
result: datetime = getattr(message, field).ToDatetime(tzinfo=timezone.utc)
|
|
113
|
+
return result
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def datetime_to_timestamp(value: datetime, field: str) -> Timestamp:
|
|
117
|
+
"""Encode an aware ``datetime`` as a ``Timestamp``; naive values raise ``ValueError``."""
|
|
118
|
+
if not isinstance(value, datetime):
|
|
119
|
+
raise TypeError(f"{field} must be a datetime, got {type(value).__name__}")
|
|
120
|
+
if value.tzinfo is None or value.utcoffset() is None:
|
|
121
|
+
raise ValueError(f"{field} must be timezone-aware, for example datetime.now(timezone.utc)")
|
|
122
|
+
timestamp = Timestamp()
|
|
123
|
+
timestamp.FromDatetime(value.astimezone(timezone.utc))
|
|
124
|
+
return timestamp
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def seconds_from_proto(seconds: int) -> timedelta | None:
|
|
128
|
+
"""A whole-seconds proto integer as ``timedelta``; ``0`` (not set) becomes ``None``."""
|
|
129
|
+
return timedelta(seconds=seconds) if seconds else None
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def timedelta_to_seconds(value: timedelta, field: str) -> int:
|
|
133
|
+
"""Encode a ``timedelta`` as whole seconds; a fractional second raises ``ValueError``."""
|
|
134
|
+
if not isinstance(value, timedelta):
|
|
135
|
+
raise TypeError(f"{field} must be a timedelta, got {type(value).__name__}")
|
|
136
|
+
if value % _ONE_SECOND:
|
|
137
|
+
raise ValueError(f"{field} must be a whole number of seconds, got {value!r}")
|
|
138
|
+
return value // _ONE_SECOND
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def date_to_str(value: date | str, field: str) -> str:
|
|
142
|
+
"""Encode a calendar date as ``YYYY-MM-DD``.
|
|
143
|
+
|
|
144
|
+
A ``date`` is used as is; an aware ``datetime`` is converted to its UTC date (a
|
|
145
|
+
naive one raises ``ValueError``); a ``str`` must already be a real ``YYYY-MM-DD``
|
|
146
|
+
date.
|
|
147
|
+
"""
|
|
148
|
+
if isinstance(value, datetime):
|
|
149
|
+
if value.tzinfo is None or value.utcoffset() is None:
|
|
150
|
+
raise ValueError(f"{field} must be a date or a timezone-aware datetime")
|
|
151
|
+
return value.astimezone(timezone.utc).date().isoformat()
|
|
152
|
+
if isinstance(value, date):
|
|
153
|
+
return value.isoformat()
|
|
154
|
+
if isinstance(value, str):
|
|
155
|
+
if _ISO_DATE.fullmatch(value):
|
|
156
|
+
try:
|
|
157
|
+
date.fromisoformat(value)
|
|
158
|
+
except ValueError:
|
|
159
|
+
pass
|
|
160
|
+
else:
|
|
161
|
+
return value
|
|
162
|
+
raise ValueError(f"{field} must be a YYYY-MM-DD date, got {value!r}")
|
|
163
|
+
raise TypeError(f"{field} must be a date or a YYYY-MM-DD string, got {type(value).__name__}")
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
from .actions import ActionClient
|
|
2
|
+
from .models.trigger_event import DeliveryScope, DetectionMode, PayloadState, TriggerEvent
|
|
3
|
+
from .models.triggers import (
|
|
4
|
+
AccountHealth,
|
|
5
|
+
AccountHealthAction,
|
|
6
|
+
AccountHealthState,
|
|
7
|
+
AvailableTrigger,
|
|
8
|
+
BatchCreateTriggerSubscriptionResult,
|
|
9
|
+
BatchCreateTriggerSubscriptionsResponse,
|
|
10
|
+
BatchDeleteTriggerSubscriptionResult,
|
|
11
|
+
BatchDeleteTriggerSubscriptionsResponse,
|
|
12
|
+
BatchLookupTriggerDeliveriesResponse,
|
|
13
|
+
BatchLookupTriggerDeliveryResult,
|
|
14
|
+
BatchResendTriggerDeliveriesResponse,
|
|
15
|
+
BatchResendTriggerDeliveryResult,
|
|
16
|
+
ConfigField,
|
|
17
|
+
EligibleAccount,
|
|
18
|
+
GenerateTriggerSigningSecretResponse,
|
|
19
|
+
GetTriggerActivityResponse,
|
|
20
|
+
GetTriggerUsageResponse,
|
|
21
|
+
ListAvailableTriggersResponse,
|
|
22
|
+
ListEligibleAccountsResponse,
|
|
23
|
+
ListTriggerDeliveriesByEndpointResponse,
|
|
24
|
+
ListTriggerDeliveryAttemptsByEndpointResponse,
|
|
25
|
+
ListTriggerDeliveryAttemptsByMessageResponse,
|
|
26
|
+
ListTriggerSubscriptionsResponse,
|
|
27
|
+
LookupTriggerDeliveryResponse,
|
|
28
|
+
RecoverTriggerDeliveriesResponse,
|
|
29
|
+
RequiredScope,
|
|
30
|
+
TriggerDelivery,
|
|
31
|
+
TriggerDeliveryAttempt,
|
|
32
|
+
TriggerDeliveryAttemptStatus,
|
|
33
|
+
TriggerDeliveryAttemptTriggerType,
|
|
34
|
+
TriggerDeliveryLookupOutcome,
|
|
35
|
+
TriggerDeliveryResendOutcome,
|
|
36
|
+
TriggerDeliveryResendTarget,
|
|
37
|
+
TriggerDeliveryResendTargetParam,
|
|
38
|
+
TriggerDeliveryStatus,
|
|
39
|
+
TriggerIngressEndpoint,
|
|
40
|
+
TriggerPlatformCredentials,
|
|
41
|
+
TriggerPollErrorCode,
|
|
42
|
+
TriggerPollState,
|
|
43
|
+
TriggerRefusalCode,
|
|
44
|
+
TriggerSubscribeOutcome,
|
|
45
|
+
TriggerSubscription,
|
|
46
|
+
TriggerSubscriptionDeleteOutcome,
|
|
47
|
+
TriggerSubscriptionStatus,
|
|
48
|
+
TriggerUsageBucket,
|
|
49
|
+
TriggerUsageDay,
|
|
50
|
+
TriggerUsageHour,
|
|
51
|
+
TriggerUsagePeriod,
|
|
52
|
+
)
|
|
53
|
+
from .triggers import ActionTriggers, HeadersLike, verify_trigger_event
|
|
54
|
+
|
|
55
|
+
__all__ = [
|
|
56
|
+
'AccountHealth',
|
|
57
|
+
'AccountHealthAction',
|
|
58
|
+
'AccountHealthState',
|
|
59
|
+
'ActionClient',
|
|
60
|
+
'ActionTriggers',
|
|
61
|
+
'AvailableTrigger',
|
|
62
|
+
'BatchCreateTriggerSubscriptionResult',
|
|
63
|
+
'BatchCreateTriggerSubscriptionsResponse',
|
|
64
|
+
'BatchDeleteTriggerSubscriptionResult',
|
|
65
|
+
'BatchDeleteTriggerSubscriptionsResponse',
|
|
66
|
+
'BatchLookupTriggerDeliveriesResponse',
|
|
67
|
+
'BatchLookupTriggerDeliveryResult',
|
|
68
|
+
'BatchResendTriggerDeliveriesResponse',
|
|
69
|
+
'BatchResendTriggerDeliveryResult',
|
|
70
|
+
'ConfigField',
|
|
71
|
+
'DeliveryScope',
|
|
72
|
+
'DetectionMode',
|
|
73
|
+
'EligibleAccount',
|
|
74
|
+
'GenerateTriggerSigningSecretResponse',
|
|
75
|
+
'GetTriggerActivityResponse',
|
|
76
|
+
'GetTriggerUsageResponse',
|
|
77
|
+
'HeadersLike',
|
|
78
|
+
'ListAvailableTriggersResponse',
|
|
79
|
+
'ListEligibleAccountsResponse',
|
|
80
|
+
'ListTriggerDeliveriesByEndpointResponse',
|
|
81
|
+
'ListTriggerDeliveryAttemptsByEndpointResponse',
|
|
82
|
+
'ListTriggerDeliveryAttemptsByMessageResponse',
|
|
83
|
+
'ListTriggerSubscriptionsResponse',
|
|
84
|
+
'LookupTriggerDeliveryResponse',
|
|
85
|
+
'PayloadState',
|
|
86
|
+
'RecoverTriggerDeliveriesResponse',
|
|
87
|
+
'RequiredScope',
|
|
88
|
+
'TriggerDelivery',
|
|
89
|
+
'TriggerDeliveryAttempt',
|
|
90
|
+
'TriggerDeliveryAttemptStatus',
|
|
91
|
+
'TriggerDeliveryAttemptTriggerType',
|
|
92
|
+
'TriggerDeliveryLookupOutcome',
|
|
93
|
+
'TriggerDeliveryResendOutcome',
|
|
94
|
+
'TriggerDeliveryResendTarget',
|
|
95
|
+
'TriggerDeliveryResendTargetParam',
|
|
96
|
+
'TriggerDeliveryStatus',
|
|
97
|
+
'TriggerEvent',
|
|
98
|
+
'TriggerIngressEndpoint',
|
|
99
|
+
'TriggerPlatformCredentials',
|
|
100
|
+
'TriggerPollErrorCode',
|
|
101
|
+
'TriggerPollState',
|
|
102
|
+
'TriggerRefusalCode',
|
|
103
|
+
'TriggerSubscribeOutcome',
|
|
104
|
+
'TriggerSubscription',
|
|
105
|
+
'TriggerSubscriptionDeleteOutcome',
|
|
106
|
+
'TriggerSubscriptionStatus',
|
|
107
|
+
'TriggerUsageBucket',
|
|
108
|
+
'TriggerUsageDay',
|
|
109
|
+
'TriggerUsageHour',
|
|
110
|
+
'TriggerUsagePeriod',
|
|
111
|
+
'verify_trigger_event',
|
|
112
|
+
]
|
|
@@ -27,6 +27,7 @@ from scalekit.actions.modifier import (
|
|
|
27
27
|
from scalekit.actions._proxy_path import ProxySession, ensure_under_proxy_prefix
|
|
28
28
|
from scalekit.common.exceptions import ScalekitNotFoundException
|
|
29
29
|
from scalekit.actions.triggers import ActionTriggers
|
|
30
|
+
from scalekit.triggers import TriggersClient
|
|
30
31
|
from scalekit.mcp import _check_connection_token_args
|
|
31
32
|
from scalekit.v1.tools.tools_pb2 import Filter
|
|
32
33
|
from google.protobuf.wrappers_pb2 import BoolValue
|
|
@@ -37,7 +38,15 @@ from google.protobuf.wrappers_pb2 import BoolValue
|
|
|
37
38
|
class ActionClient:
|
|
38
39
|
"""Class definition for Connect Client"""
|
|
39
40
|
|
|
40
|
-
def __init__(
|
|
41
|
+
def __init__(
|
|
42
|
+
self,
|
|
43
|
+
tools_client,
|
|
44
|
+
connected_accounts_client,
|
|
45
|
+
mcp_client=None,
|
|
46
|
+
providers_client=None,
|
|
47
|
+
*,
|
|
48
|
+
triggers_client: TriggersClient | None = None,
|
|
49
|
+
):
|
|
41
50
|
"""
|
|
42
51
|
Initialize ActionClient with tools, connected accounts, and MCP dependencies
|
|
43
52
|
|
|
@@ -49,6 +58,9 @@ class ActionClient:
|
|
|
49
58
|
:type: McpClient
|
|
50
59
|
:param providers_client: ProvidersClient instance (optional)
|
|
51
60
|
:type: ProvidersClient
|
|
61
|
+
:param triggers_client: TriggersClient instance (optional, keyword only);
|
|
62
|
+
required by the networked ``triggers`` methods
|
|
63
|
+
:type: TriggersClient
|
|
52
64
|
|
|
53
65
|
:returns:
|
|
54
66
|
None
|
|
@@ -60,6 +72,7 @@ class ActionClient:
|
|
|
60
72
|
self._mcp_actions = None
|
|
61
73
|
self._providers_client = providers_client
|
|
62
74
|
self._providers_actions = None
|
|
75
|
+
self._triggers_client = triggers_client
|
|
63
76
|
self._triggers_actions: ActionTriggers | None = None
|
|
64
77
|
self._modifiers: List[Modifier] = []
|
|
65
78
|
self._google = None
|
|
@@ -112,14 +125,20 @@ class ActionClient:
|
|
|
112
125
|
|
|
113
126
|
@property
|
|
114
127
|
def triggers(self) -> ActionTriggers:
|
|
115
|
-
"""
|
|
128
|
+
"""Manage AgentKit triggers, and verify the trigger events delivered to you.
|
|
129
|
+
|
|
130
|
+
``verify_event`` is local (no network call). The other methods (catalogue,
|
|
131
|
+
subscriptions, webhook URL and signing secret, activity, usage, deliveries)
|
|
132
|
+
call Scalekit and need the triggers client that ``ScalekitClient`` wires in;
|
|
133
|
+
without one they raise ``ValueError``.
|
|
116
134
|
|
|
117
135
|
Example:
|
|
118
136
|
>>> event = client.actions.triggers.verify_event(
|
|
119
137
|
... body, headers=request.headers, secret=secret)
|
|
138
|
+
>>> page = client.actions.triggers.list_subscriptions("conn_123")
|
|
120
139
|
"""
|
|
121
140
|
if self._triggers_actions is None:
|
|
122
|
-
self._triggers_actions = ActionTriggers()
|
|
141
|
+
self._triggers_actions = ActionTriggers(triggers_client=self._triggers_client)
|
|
123
142
|
return self._triggers_actions
|
|
124
143
|
|
|
125
144
|
@property
|