Sync (requests) and async (httpx) clients with identical API surface to the Node.js SDK. Delivered: - pyproject.toml — python>=3.9, hatchling build, mypy strict config - types.py — all 14-endpoint request/response dataclasses - errors.py — AgentIdPError with from_api_error, from_oauth2_error, network_error - token_manager.py — thread-safe sync TokenManager, 60s refresh buffer - async_token_manager.py — asyncio-safe AsyncTokenManager (httpx) - _request.py — shared sync/async request helper (DRY) - services/agents.py — AgentRegistryClient + AsyncAgentRegistryClient (5 methods each) - services/credentials.py — CredentialClient + AsyncCredentialClient (4 methods each) - services/token.py — TokenClient + AsyncTokenClient (introspect + revoke) - services/audit.py — AuditClient + AsyncAuditClient (query + get) - client.py — AgentIdPClient + AsyncAgentIdPClient - __init__.py — barrel exports - README.md — installation, quick start, full API reference QA gates: - mypy --strict: 0 errors (12 source files) - pytest: 57/57 passed - Coverage: 90.83% (required >= 80%) - All 14 endpoints covered (sync + async) - AgentIdPError raised on all failure paths Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
83 lines
1.8 KiB
Python
83 lines
1.8 KiB
Python
"""
|
|
SentryAgent.ai AgentIdP Python SDK.
|
|
|
|
Provides synchronous and asynchronous clients for the AgentIdP API.
|
|
|
|
Example (sync)::
|
|
|
|
from sentryagent_idp import AgentIdPClient
|
|
|
|
client = AgentIdPClient(
|
|
base_url="http://localhost:3000",
|
|
client_id="your-agent-id",
|
|
client_secret="your-client-secret",
|
|
)
|
|
result = client.agents.list_agents()
|
|
|
|
Example (async)::
|
|
|
|
from sentryagent_idp import AsyncAgentIdPClient
|
|
|
|
client = AsyncAgentIdPClient(
|
|
base_url="http://localhost:3000",
|
|
client_id="your-agent-id",
|
|
client_secret="your-client-secret",
|
|
)
|
|
result = await client.agents.list_agents()
|
|
"""
|
|
|
|
from .client import AgentIdPClient, AsyncAgentIdPClient
|
|
from .errors import AgentIdPError
|
|
from .token_manager import TokenManager
|
|
from .async_token_manager import AsyncTokenManager
|
|
from .types import (
|
|
Agent,
|
|
AgentStatus,
|
|
AgentType,
|
|
AuditAction,
|
|
AuditEvent,
|
|
AuditOutcome,
|
|
Credential,
|
|
CredentialStatus,
|
|
CredentialWithSecret,
|
|
DeploymentEnv,
|
|
IntrospectResponse,
|
|
OAuthScope,
|
|
PaginatedAgents,
|
|
PaginatedAuditEvents,
|
|
PaginatedCredentials,
|
|
RegisterAgentRequest,
|
|
TokenResponse,
|
|
UpdateAgentRequest,
|
|
)
|
|
|
|
__all__ = [
|
|
# Clients
|
|
"AgentIdPClient",
|
|
"AsyncAgentIdPClient",
|
|
# Errors
|
|
"AgentIdPError",
|
|
# Token managers (for advanced use)
|
|
"TokenManager",
|
|
"AsyncTokenManager",
|
|
# Types
|
|
"Agent",
|
|
"AgentStatus",
|
|
"AgentType",
|
|
"AuditAction",
|
|
"AuditEvent",
|
|
"AuditOutcome",
|
|
"Credential",
|
|
"CredentialStatus",
|
|
"CredentialWithSecret",
|
|
"DeploymentEnv",
|
|
"IntrospectResponse",
|
|
"OAuthScope",
|
|
"PaginatedAgents",
|
|
"PaginatedAuditEvents",
|
|
"PaginatedCredentials",
|
|
"RegisterAgentRequest",
|
|
"TokenResponse",
|
|
"UpdateAgentRequest",
|
|
]
|