asap-protocol 2.5.4__tar.gz → 2.5.6__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.
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/CHANGELOG.md +183 -4
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/PKG-INFO +49 -47
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/README.md +39 -37
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/pyproject.toml +35 -26
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/__init__.py +1 -1
- asap_protocol-2.5.6/src/asap/adapters/mcp/__init__.py +26 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/adapters/openapi/__init__.py +1 -1
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/adapters/openapi/capability_mapper.py +7 -10
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/adapters/openapi/handler.py +38 -10
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/agent_jwt.py +18 -13
- asap_protocol-2.5.6/src/asap/auth/agent_jwt_session.py +92 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/approval.py +87 -5
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/capabilities.py +56 -7
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/identity.py +217 -13
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/self_auth.py +3 -3
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/webauthn.py +4 -5
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/webauthn_store.py +2 -2
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/client/revocation.py +1 -1
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/crypto/trust.py +1 -1
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/README.md +2 -8
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/auth_patterns.py +7 -6
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/coordinator.py +1 -1
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/rate_limiting.py +3 -3
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/streaming_response.py +2 -2
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/mcp/auth/__init__.py +6 -7
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/mcp/auth/auth_middleware.py +1 -2
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/mcp/auth/config.py +2 -2
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/mcp/auth/protected_server.py +5 -5
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/registry/auto_registration.py +20 -1
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/registry/bot_pr.py +11 -1
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/state/stores/_sync_bridge.py +1 -2
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/testing/compliance.py +11 -2
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/_request_handler.py +9 -15
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/agent_routes.py +104 -32
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/capability_routes.py +30 -4
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/client/__init__.py +7 -19
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/client/_core.py +5 -8
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/client/_discovery.py +4 -8
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/client/_helpers.py +2 -7
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/client/_send.py +4 -5
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/escalation_routes.py +31 -2
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/handlers.py +0 -2
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/middleware.py +0 -2
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/server.py +4 -4
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/validators.py +0 -1
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/webhook.py +16 -1
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/websocket.py +14 -34
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/ws/__init__.py +13 -16
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/ws/_ack.py +4 -6
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/ws/_dispatch.py +13 -17
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/ws/_recv.py +4 -5
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/ws/client.py +12 -40
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/ws/codecs.py +8 -14
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/ws/pool.py +2 -3
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/ws/server.py +26 -58
- asap_protocol-2.5.4/src/asap/adapters/mcp/__init__.py +0 -33
- asap_protocol-2.5.4/src/asap/examples/websocket_concept.py +0 -129
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/.gitignore +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/LICENSE +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/entities/agent.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/entities/artifact.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/entities/conversation.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/entities/manifest.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/entities/message.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/entities/state_snapshot.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/entities/task.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/envelope.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/examples/shellclaw-jetson-capabilities.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/parts/data_part.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/parts/file_part.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/parts/resource_part.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/parts/template_part.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/parts/text_part.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/payloads/artifact_notify.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/payloads/mcp_resource_data.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/payloads/mcp_resource_fetch.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/payloads/mcp_tool_call.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/payloads/mcp_tool_result.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/payloads/message_send.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/payloads/state_query.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/payloads/state_restore.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/payloads/task_cancel.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/payloads/task_request.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/payloads/task_response.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/schemas/payloads/task_update.schema.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/adapters/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/adapters/mcp/auth_middleware.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/adapters/mcp/capability_map.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/adapters/mcp/config.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/adapters/mcp/errors.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/adapters/mcp/jwt_extractor.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/adapters/mcp/protected_server.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/adapters/openapi/approval.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/adapters/openapi/factory.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/adapters/openapi/spec_loader.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/_scope_parse.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/introspection.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/jti_replay_cache.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/jwks.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/middleware.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/oauth2.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/oidc.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/auth/scopes.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/cli/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/cli/_compat.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/cli/audit_export.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/cli/compliance_check.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/cli/delegation.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/cli/keys.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/cli/manifest.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/cli/repl.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/cli/schemas.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/cli/trace.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/client/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/client/cache.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/client/http_client.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/client/market.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/client/trust.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/crypto/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/crypto/keys.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/crypto/models.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/crypto/signing.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/crypto/trust_levels.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/discovery/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/discovery/dnssd.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/discovery/health.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/discovery/registry.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/discovery/validation.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/discovery/wellknown.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/economics/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/economics/audit.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/economics/delegation.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/economics/delegation_storage.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/economics/hooks.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/economics/metering.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/economics/sla.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/economics/sla_storage.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/economics/storage.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/errors.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/a2h_approval.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/agent_failover.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/echo_agent.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/error_recovery.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/long_running.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/mcp_client_demo.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/mcp_integration.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/multi_step_workflow.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/orchestration.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/run_demo.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/secure_agent.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/secure_handler.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/state_migration.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/storage_backends.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/streaming_agent.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/v1_3_0_showcase.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/examples/v1_4_0_showcase.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/handlers/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/handlers/hitl.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/integrations/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/integrations/_base.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/integrations/a2h.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/integrations/crewai.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/integrations/langchain.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/integrations/llamaindex.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/integrations/openclaw.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/integrations/pydanticai.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/integrations/smolagents.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/integrations/vercel_ai.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/mcp/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/mcp/auth/capability_map.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/mcp/auth/errors.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/mcp/auth/jwt_extractor.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/mcp/client.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/mcp/protocol.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/mcp/serve.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/mcp/server.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/mcp/server_runner.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/models/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/models/base.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/models/constants.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/models/entities.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/models/enums.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/models/envelope.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/models/ids.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/models/parts.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/models/payloads.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/models/types.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/models/validators.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/observability/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/observability/dashboards/README.md +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/observability/dashboards/asap-detailed.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/observability/dashboards/asap-red.json +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/observability/logging.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/observability/metrics.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/observability/trace_parser.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/observability/trace_ui.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/observability/tracing.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/registry/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/registry/anti_spam.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/registry/receipt_cache.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/schemas.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/state/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/state/machine.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/state/metering.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/state/snapshot.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/state/stores/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/state/stores/_sqlite_base.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/state/stores/memory.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/state/stores/sqlite.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/testing/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/testing/asgi_factory.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/testing/assertions.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/testing/fixtures.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/testing/mocks.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/_auth_helpers.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/_state_deps.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/cache.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/challenge.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/circuit_breaker.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/compression.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/delegation_api.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/errors.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/executors.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/jsonrpc.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/lambda_codec.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/mtls.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/rate_limit.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/routes/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/routes/audit.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/routes/health.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/routes/jsonrpc.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/routes/websocket.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/sla_api.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/usage_api.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/ws/_actions.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/transport/ws/_errors.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/utils/__init__.py +0 -0
- {asap_protocol-2.5.4 → asap_protocol-2.5.6}/src/asap/utils/sanitization.py +0 -0
|
@@ -7,7 +7,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
### Follow-up (planned
|
|
10
|
+
### Follow-up (planned)
|
|
11
11
|
|
|
12
12
|
- **Formal Spec & Interop** — RFC spec, introspection, privacy ([prd-v2.5.5-formal-spec-interop.md](product/prd/prd-v2.5.5-formal-spec-interop.md)).
|
|
13
13
|
- `@asap-protocol/mcp-auth` HTTP/SSE middleware (deferred from v2.5.0 — see [2.5.0] TypeScript note and [typescript-mcp-auth-spike.md](engineering/tasks/v2.5.0/typescript-mcp-auth-spike.md)).
|
|
@@ -16,14 +16,193 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
## [2.5.
|
|
19
|
+
## [2.5.6] - 2026-10-01
|
|
20
|
+
|
|
21
|
+
**Security & quality patch** — Lite Registry IssueOps envelope and endpoint SSRF
|
|
22
|
+
hardening, compliance harness open-redirect SSRF, constrained capability execute,
|
|
23
|
+
Agent JWT rotate-key lifecycle race, dependency bumps, and consolidated regression
|
|
24
|
+
tests on `development` via [#354](https://github.com/asap-protocol/asap-protocol/pull/354)–[#379](https://github.com/asap-protocol/asap-protocol/pull/379).
|
|
25
|
+
This is **not** Formal Spec & Interop. npm `@asap-protocol/*` packages remain
|
|
26
|
+
at **2.4.1**. PyPI `asap-compliance` remains **1.3.0**.
|
|
27
|
+
Tag [`v2.5.6`](https://github.com/asap-protocol/asap-protocol/releases/tag/v2.5.6)
|
|
28
|
+
· PyPI `asap-protocol==2.5.6`.
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- **Lite Registry IssueOps envelope (#354)** — `save_registry` again writes a
|
|
33
|
+
`LiteRegistry` object (`version`, `updated_at`, `agents`) so
|
|
34
|
+
`discover_from_registry` and Python validation keep working after
|
|
35
|
+
registration/removal. CI `validate_registry.py` and auto-merge eligibility
|
|
36
|
+
now reject a bare root array on production `registry.json` (fixture dry-runs
|
|
37
|
+
use `--allow-agents-array`).
|
|
38
|
+
|
|
39
|
+
- **Agent JWT rotate-key lifecycle (#372)** — lifecycle persistence uses
|
|
40
|
+
compare-and-set on `expected_public_key` so stale snapshots cannot undo
|
|
41
|
+
`POST /asap/agent/rotate-key`.
|
|
42
|
+
|
|
43
|
+
### Security
|
|
44
|
+
|
|
45
|
+
- **Capability execute omitted arguments (#373)** — ``CapabilityRegistry.check_grant``
|
|
46
|
+
and ``POST /asap/capability/execute`` treat a missing ``arguments`` object
|
|
47
|
+
as empty when the grant has constraints. Constrained fields stay required,
|
|
48
|
+
so omitting the object no longer skips the allowlist.
|
|
49
|
+
|
|
50
|
+
- **Compliance harness open-redirect SSRF (#370)** — ``run_compliance_harness_v2_from_url``
|
|
51
|
+
no longer sets ``follow_redirects=True``. Auto-registration
|
|
52
|
+
(``POST /registry/agents``) allowlists the harness base URL once, then the
|
|
53
|
+
harness preflight and checks use that client; a public agent could
|
|
54
|
+
``302`` to ``http://169.254.169.254/`` (or another blocked hop) and the
|
|
55
|
+
registry-bot would fetch it. Same fail-closed policy as
|
|
56
|
+
``fetch_manifest_at_url``. ``asap compliance-check`` against a hostile
|
|
57
|
+
URL is covered by the same client.
|
|
58
|
+
|
|
59
|
+
- **IssueOps registry endpoint SSRF (#371)** — `process_registration` rejects HTTP
|
|
60
|
+
and WebSocket endpoints that resolve to private, loopback, cloud-metadata, or
|
|
61
|
+
NAT64-embedded private hosts before writing `registry.json`. Manifest fetch was
|
|
62
|
+
already allowlisted; the advertised agent URLs were not, so a public signed
|
|
63
|
+
manifest could list `http://169.254.169.254/` and SDK `MarketClient.run`
|
|
64
|
+
would dial IMDS.
|
|
65
|
+
|
|
66
|
+
### Changed
|
|
67
|
+
|
|
68
|
+
- **GitHub Actions deps (#374)** — grouped bump for CI and release workflows.
|
|
69
|
+
- **`apps/web` npm deps (#375)** — grouped production and dev dependency updates.
|
|
70
|
+
|
|
71
|
+
### Quality
|
|
72
|
+
|
|
73
|
+
- **Consolidated regression tests (#376–#379)** — SSRF and web policy coverage,
|
|
74
|
+
transport binding/nonce/validation edges, streaming registration and SLA idle
|
|
75
|
+
windows, and auth lifecycle/session gates.
|
|
76
|
+
|
|
77
|
+
### Migration
|
|
78
|
+
|
|
79
|
+
- **v2.5.5 → v2.5.6**: See [migration guide](docs/migration.md#upgrading-from-v255-to-v256).
|
|
80
|
+
No wire-protocol or manifest schema breaking changes. Capability clients with
|
|
81
|
+
constrained grants must send an ``arguments`` object (may be empty). Registry
|
|
82
|
+
operators must keep `registry.json` as a `LiteRegistry` envelope.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## [2.5.5] - 2026-09-11
|
|
20
87
|
|
|
21
|
-
|
|
88
|
+
**Security & quality patch** — OpenAPI path-parameter climb, Lite Registry
|
|
89
|
+
add-only URN policy, marketplace allowlisted-fetch DNS pin, capability-replace
|
|
90
|
+
consent, fail-closed reactivate, Agent JWT persist/revoke races, and
|
|
91
|
+
dependency floors already on `main` via [#344](https://github.com/asap-protocol/asap-protocol/pull/344)–[#350](https://github.com/asap-protocol/asap-protocol/pull/350).
|
|
92
|
+
This is **not** Formal Spec & Interop. npm `@asap-protocol/*` packages remain
|
|
93
|
+
at **2.4.1**. PyPI `asap-compliance` remains **1.3.0**.
|
|
94
|
+
Tag [`v2.5.5`](https://github.com/asap-protocol/asap-protocol/releases/tag/v2.5.5)
|
|
95
|
+
· PyPI `asap-protocol==2.5.5`.
|
|
96
|
+
|
|
97
|
+
### Security
|
|
98
|
+
|
|
99
|
+
- **Reactivate approval bypass (#348)** — ``reactivate_agent`` /
|
|
100
|
+
``POST /asap/agent/reactivate`` only allow ``active`` / ``expired``
|
|
101
|
+
(fail-closed). ``pending``, ``rejected``, ``revoked``, and any future
|
|
102
|
+
status cannot be force-activated. LIFE-004 scopes reactivation to expired
|
|
103
|
+
agents; flipping a denied or still-open registration would skip host
|
|
104
|
+
consent.
|
|
105
|
+
- **Capability escalation constraint overwrite (#347)** —
|
|
106
|
+
``POST /asap/agent/request-capability`` no longer auto-applies a name in
|
|
107
|
+
``host.default_capabilities`` when that would clear, weaken, or otherwise
|
|
108
|
+
replace an existing registry grant (constraints, status, or a
|
|
109
|
+
host-imposed ``expires_at``). Constraint or expiry changes require the same
|
|
110
|
+
Device Auth / CIBA consent path as non-default capability names. Identical
|
|
111
|
+
active re-requests do not rewrite the grant row. A2H prompts include the
|
|
112
|
+
requested spec, not names only.
|
|
113
|
+
- **Marketplace allowlisted fetch DNS pin (#346)** — `/api/health-check`,
|
|
114
|
+
`/api/proxy/check`, and dashboard register HEAD no longer let Node
|
|
115
|
+
`fetch` re-resolve after the SSRF allowlist. `connect()` is pinned to
|
|
116
|
+
the allowlisted IPs, each redirect hop is re-validated, hop sockets are
|
|
117
|
+
dropped after headers, and the 3s budget is shared across the walk
|
|
118
|
+
(DNS rebinding / private Location / body-drain DoS).
|
|
119
|
+
- **Lite Registry auto-registration (#345)** — `POST /registry/agents` and the
|
|
120
|
+
auto-merge policy cannot overwrite or delete existing agent URNs.
|
|
121
|
+
Duplicate ids in `registry.json` are rejected (marketplace lookup is
|
|
122
|
+
first-match). Updates and removals stay on IssueOps / human review.
|
|
123
|
+
- **OpenAPI path-parameter climb (#344)** — ``_fill_path_template`` rejects
|
|
124
|
+
``.`` / ``..`` path params before ``httpx.request``.
|
|
125
|
+
``quote(..., safe="")`` leaves RFC 3986 dots unencoded, so a granted
|
|
126
|
+
skill for ``/v1/{resource}/{id}`` with both params ``..`` would climb
|
|
127
|
+
out of a path-prefixed ``base_url`` (confused deputy with OA-009
|
|
128
|
+
headers). Static templates that already contain ``.`` / ``..`` raise
|
|
129
|
+
``OpenAPIPathParameterError`` instead of ``ValueError``.
|
|
130
|
+
- **Marketplace IPv6 SSRF ranges (#350)** — ``isBlockedIPv6`` treats link-local
|
|
131
|
+
as ``fe80::/10`` (not ``fe80:`` /16), blocks unspecified ``::``, and
|
|
132
|
+
applies the IPv4 blocklist to NAT64 ``64:ff9b::/96`` embeddings.
|
|
133
|
+
- **Pending Device Auth / CIBA spec reuse (#350)** — a later escalation request
|
|
134
|
+
merges ``capability_specs`` and rotates to a new challenge. A2H
|
|
135
|
+
approve/deny is ignored when the store payload no longer matches the
|
|
136
|
+
prompt, so a stale consent cannot grant a wider set.
|
|
137
|
+
|
|
138
|
+
### Security (deps)
|
|
139
|
+
|
|
140
|
+
- Raise `cryptography` to `>=50.0.0,<51` for **PYSEC-2026-3552** (PKCS7
|
|
141
|
+
Bleichenbacher; 49.0.0 already covered PYSEC-2026-3553/3554). Pair with
|
|
142
|
+
`pyopenssl>=26.4.0` so `[webauthn]` stays importable.
|
|
143
|
+
- Raise `aiohttp` override to `>=3.14.3,<4` for **PYSEC-2026-3545/3546/3547**.
|
|
144
|
+
- Add `h2>=4.4.1` override for **PYSEC-2026-3628**.
|
|
145
|
+
- Raise `pip` floor to `>=26.2` for **PYSEC-2026-3721**.
|
|
146
|
+
- Raise optional `[pydanticai]` floor to `pydantic-ai>=1.106.0,<2` for
|
|
147
|
+
**PYSEC-2026-3692/3693**.
|
|
148
|
+
- `apps/web` npm overrides: `fast-uri@^3.1.6`, `nanoid@^3.3.18`,
|
|
149
|
+
`postcss@^8.5.23`, `brace-expansion@^5.0.9`, `ip-address@^10.3.1`,
|
|
150
|
+
`js-yaml@^4.3.1`, `undici@^7.29.0`, `fflate@^0.8.3`
|
|
151
|
+
(**CVE-2026-45820**), `baseline-browser-mapping@^2.11.0`
|
|
152
|
+
(**CVE-2026-45819**), and `browserslist@^4.28.9` so
|
|
153
|
+
production moderate+ and full-graph high+ audits stay clean.
|
|
154
|
+
- Raise `apps/web` `next` to **16.3.4** and `eslint-config-next` to match
|
|
155
|
+
(**GHSA-p293-qw3h-jr36**, **GHSA-2xp9-vwfh-vxw4**). Align `sharp` to
|
|
156
|
+
`^0.35.4` (**GHSA-rgj7-g3m4-5g8c** / libheif).
|
|
157
|
+
- Raise `mkdocs-material` to `>=9.7.7` for **PYSEC-2026-3864** /
|
|
158
|
+
**CVE-2026-73295** (DOM XSS in `search.suggest`). The wheel bump does not
|
|
159
|
+
patch GitHub Pages until the docs site is rebuilt and published (`Docs`
|
|
160
|
+
workflow on `main`).
|
|
161
|
+
|
|
162
|
+
### Fixed
|
|
163
|
+
|
|
164
|
+
- **Agent JWT session sliding (LIFE-005)** — Successful
|
|
165
|
+
:func:`~asap.auth.agent_jwt.verify_agent_jwt` always persists the extended
|
|
166
|
+
``last_used_at`` after a verified Agent JWT (restores the pre-S3 “verifier
|
|
167
|
+
writes” contract; callers must not assume they alone persist idle timeout).
|
|
168
|
+
Side effect: authenticated ``GET /asap/capability/list`` with an Agent JWT
|
|
169
|
+
now slides idle timeout the same as other verify paths — list traffic keeps
|
|
170
|
+
sessions warm.
|
|
171
|
+
- **Agent JWT verify vs concurrent revoke/rotate** — Session extension no
|
|
172
|
+
longer uses full-row ``AgentStore.save`` of a verify-time snapshot (that
|
|
173
|
+
TOCTOU could resurrect a revoked agent or undo ``rotate-key``). Persist goes
|
|
174
|
+
through ``AgentStore.touch_if_current`` (atomic ``UPDATE ... WHERE status =
|
|
175
|
+
'active'`` plus matching ``host_id`` and RFC 7638 public-key thumbprint).
|
|
176
|
+
Custom store authors must implement that method; get→mutate→save is not
|
|
177
|
+
sufficient.
|
|
178
|
+
- **Rotate-key / reactivate / status vs concurrent revoke** — Those handlers
|
|
179
|
+
re-read then persist through ``save_agent_unless_revoked``. ``AgentStore.save``
|
|
180
|
+
must reject replacing a ``revoked`` row with a non-revoked snapshot
|
|
181
|
+
(``InMemoryAgentStore`` raises ``RevokedAgentOverwriteError``). Custom stores
|
|
182
|
+
that await I/O inside ``save`` must make that check atomic
|
|
183
|
+
(``UPDATE ... WHERE status <> 'revoked'``).
|
|
184
|
+
|
|
185
|
+
### Changed
|
|
186
|
+
|
|
187
|
+
- **CI setup-uv pin (#350)** — `.github/actions/setup-python` pins
|
|
188
|
+
`astral-sh/setup-uv` to **v10.0.1**.
|
|
189
|
+
- **Dependabot groups (#349)** — grouped GitHub Actions and `apps/web` npm
|
|
190
|
+
production/development updates (no extra dep bump in this release PR).
|
|
191
|
+
|
|
192
|
+
### Migration
|
|
193
|
+
|
|
194
|
+
- **v2.5.4 → v2.5.5**: See [migration guide](docs/migration.md#upgrading-from-v254-to-v255).
|
|
195
|
+
No wire-protocol or manifest schema breaking changes. Custom ``AgentStore``
|
|
196
|
+
authors must implement ``touch_if_current`` and refuse revoked overwrite.
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## [2.5.4] - 2026-07-18
|
|
22
201
|
|
|
23
202
|
**Distribution Loop** — homepage, thin starters, Build for agents guide, and maintainer
|
|
24
203
|
telemetry ops (no public metrics UI). Scope:
|
|
25
204
|
[prd-v2.5.4-distribution-loop.md](product/prd/prd-v2.5.4-distribution-loop.md).
|
|
26
|
-
npm `@asap-protocol/*` packages remain at **2.4.1**.
|
|
205
|
+
npm `@asap-protocol/*` packages remain at **2.4.1**. Tag [`v2.5.4`](https://github.com/adriannoes/asap-protocol/releases/tag/v2.5.4) · PyPI `asap-protocol==2.5.4`.
|
|
27
206
|
|
|
28
207
|
### Added
|
|
29
208
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: asap-protocol
|
|
3
|
-
Version: 2.5.
|
|
3
|
+
Version: 2.5.6
|
|
4
4
|
Summary: Async Simple Agent Protocol - A streamlined protocol for agent-to-agent communication
|
|
5
|
-
Project-URL: Homepage, https://github.com/
|
|
6
|
-
Project-URL: Documentation, https://
|
|
7
|
-
Project-URL: Repository, https://github.com/
|
|
8
|
-
Project-URL: Issues, https://github.com/
|
|
5
|
+
Project-URL: Homepage, https://github.com/asap-protocol/asap-protocol
|
|
6
|
+
Project-URL: Documentation, https://asap-protocol.github.io/asap-protocol
|
|
7
|
+
Project-URL: Repository, https://github.com/asap-protocol/asap-protocol
|
|
8
|
+
Project-URL: Issues, https://github.com/asap-protocol/asap-protocol/issues
|
|
9
9
|
Project-URL: PyPI, https://pypi.org/project/asap-protocol/
|
|
10
10
|
Author: ASAP Protocol Contributors
|
|
11
11
|
License: Apache-2.0
|
|
@@ -23,7 +23,7 @@ Requires-Python: >=3.13
|
|
|
23
23
|
Requires-Dist: aiosqlite>=0.20
|
|
24
24
|
Requires-Dist: authlib<2,>=1.6.12
|
|
25
25
|
Requires-Dist: brotli>=1.2.0
|
|
26
|
-
Requires-Dist: cryptography<
|
|
26
|
+
Requires-Dist: cryptography<51,>=50.0.0
|
|
27
27
|
Requires-Dist: fastapi>=0.136.1
|
|
28
28
|
Requires-Dist: httpx[http2]>=0.28.1
|
|
29
29
|
Requires-Dist: jcs>=0.2.0
|
|
@@ -63,9 +63,9 @@ Requires-Dist: zeroconf>=0.149.5; extra == 'dns-sd'
|
|
|
63
63
|
Provides-Extra: docs
|
|
64
64
|
Requires-Dist: ghp-import>=2.1.0; extra == 'docs'
|
|
65
65
|
Requires-Dist: joserfc<2,>=1.6.7; extra == 'docs'
|
|
66
|
-
Requires-Dist: mkdocs-material>=9.
|
|
66
|
+
Requires-Dist: mkdocs-material>=9.7.7; extra == 'docs'
|
|
67
67
|
Requires-Dist: mkdocstrings[python]>=0.27; extra == 'docs'
|
|
68
|
-
Requires-Dist: pymdown-extensions>=
|
|
68
|
+
Requires-Dist: pymdown-extensions>=11.0.1; extra == 'docs'
|
|
69
69
|
Requires-Dist: python-engineio>=4.13.2; extra == 'docs'
|
|
70
70
|
Requires-Dist: python-socketio>=5.16.2; extra == 'docs'
|
|
71
71
|
Provides-Extra: langchain
|
|
@@ -79,7 +79,7 @@ Requires-Dist: openapi-pydantic>=0.5; extra == 'openapi'
|
|
|
79
79
|
Provides-Extra: openclaw
|
|
80
80
|
Requires-Dist: openclaw-sdk>=2.0; extra == 'openclaw'
|
|
81
81
|
Provides-Extra: pydanticai
|
|
82
|
-
Requires-Dist: pydantic-ai
|
|
82
|
+
Requires-Dist: pydantic-ai<2,>=1.106.0; extra == 'pydanticai'
|
|
83
83
|
Provides-Extra: redis
|
|
84
84
|
Requires-Dist: redis>=5.0.0; extra == 'redis'
|
|
85
85
|
Provides-Extra: smolagents
|
|
@@ -94,14 +94,14 @@ Description-Content-Type: text/markdown
|
|
|
94
94
|
|
|
95
95
|
*✨ From **agents**, for **agents**. Delivering reliability, **as soon as possible.***
|
|
96
96
|
|
|
97
|
-

|
|
98
98
|
|
|
99
99
|
|
|
100
100
|
> A production-ready protocol for agent-to-agent communication and task coordination.
|
|
101
101
|
|
|
102
|
-
**Quick Info**: [`v2.5.
|
|
102
|
+
**Quick Info**: [`v2.5.6`](https://github.com/asap-protocol/asap-protocol/releases/tag/v2.5.6) · PyPI [`asap-protocol`](https://pypi.org/project/asap-protocol/) | `Apache 2.0` | `Python 3.13+` | [Documentation](docs/index.md) | [Changelog](CHANGELOG.md)
|
|
103
103
|
|
|
104
|
-
> 📦 **Install** — [`asap-protocol` **2.5.
|
|
104
|
+
> 📦 **Install** — [`asap-protocol` **2.5.6** on PyPI](https://pypi.org/project/asap-protocol/) (Python) · [`@asap-protocol/client` on npm](https://www.npmjs.com/package/@asap-protocol/client) (TypeScript)
|
|
105
105
|
|
|
106
106
|
🚀 **Live now** our [**agentic marketplace**](https://asap-protocol.com/) — browse agents, register yours, request verification.
|
|
107
107
|
|
|
@@ -156,16 +156,16 @@ ASAP meets agents where they run — optional Python extras, npm tool bridges, a
|
|
|
156
156
|
We recommend using [uv](https://github.com/astral-sh/uv) for dependency management:
|
|
157
157
|
|
|
158
158
|
```bash
|
|
159
|
-
uv add asap-protocol # latest on PyPI (currently 2.5.
|
|
159
|
+
uv add asap-protocol # latest on PyPI (currently 2.5.6)
|
|
160
160
|
```
|
|
161
161
|
|
|
162
162
|
Or with pip:
|
|
163
163
|
|
|
164
164
|
```bash
|
|
165
|
-
pip install asap-protocol==2.5.
|
|
165
|
+
pip install asap-protocol==2.5.6
|
|
166
166
|
```
|
|
167
167
|
|
|
168
|
-
**TypeScript** (npm, **`2.4.1`** — unchanged for v2.5.
|
|
168
|
+
**TypeScript** (npm, **`2.4.1`** — unchanged for v2.5.6; `@asap-protocol/mcp-auth` HTTP middleware still deferred):
|
|
169
169
|
|
|
170
170
|
- [`@asap-protocol/client`](https://www.npmjs.com/package/@asap-protocol/client) — [SDK docs](docs/sdks/typescript.md)
|
|
171
171
|
- [`@asap-protocol/mastra`](https://www.npmjs.com/package/@asap-protocol/mastra) — [docs](docs/integrations/mastra.md) · [demo](apps/example-mastra/README.md)
|
|
@@ -177,7 +177,7 @@ npm install @asap-protocol/mastra@2.4.1 @asap-protocol/client @mastra/core zod
|
|
|
177
177
|
npm install @asap-protocol/openai-agents@2.4.1 @asap-protocol/client @openai/agents zod
|
|
178
178
|
```
|
|
179
179
|
|
|
180
|
-
**Python v2.5.
|
|
180
|
+
**Python v2.5.6** (security & quality patch) is **shipped** — see [Migration (v2.5.5 → v2.5.6)](docs/migration.md#upgrading-from-v255-to-v256). Dist Loop starters remain: [Build for agents](docs/guides/build-for-agents.md) · [starters](examples/starters/README.md).
|
|
181
181
|
|
|
182
182
|
## Quick Start
|
|
183
183
|
|
|
@@ -203,7 +203,7 @@ With coverage (separate run — do not combine with `-n auto`):
|
|
|
203
203
|
uv run pytest --tb=short --cov=asap --cov-report=term-missing --cov-fail-under=85
|
|
204
204
|
```
|
|
205
205
|
|
|
206
|
-
[Testing Guide](https://github.com/
|
|
206
|
+
[Testing Guide](https://github.com/asap-protocol/asap-protocol/blob/main/docs/testing.md) (structure, fixtures, property/load/chaos tests). [Contributing](https://github.com/asap-protocol/asap-protocol/blob/main/CONTRIBUTING.md) (dev setup, CI).
|
|
207
207
|
|
|
208
208
|
### Compliance Harness
|
|
209
209
|
|
|
@@ -214,9 +214,9 @@ uv add "asap-compliance>=1.3.0"
|
|
|
214
214
|
pytest --asap-agent-url https://your-agent.example.com -m asap_compliance
|
|
215
215
|
```
|
|
216
216
|
|
|
217
|
-
For **MCP Auth Bridge** stdio gates (`mcp-auth-bridge` profile), use **`asap-compliance` 1.3.0+** with **`asap-protocol` 2.5.0+** — published on PyPI via tag [`v2.5.0.1`](https://github.com/
|
|
217
|
+
For **MCP Auth Bridge** stdio gates (`mcp-auth-bridge` profile), use **`asap-compliance` 1.3.0+** with **`asap-protocol` 2.5.0+** — published on PyPI via tag [`v2.5.0.1`](https://github.com/asap-protocol/asap-protocol/releases/tag/v2.5.0.1).
|
|
218
218
|
|
|
219
|
-
See [Compliance Testing Guide](https://github.com/
|
|
219
|
+
See [Compliance Testing Guide](https://github.com/asap-protocol/asap-protocol/blob/main/docs/guides/compliance-testing.md) for handshake, schema and state machine validation.
|
|
220
220
|
|
|
221
221
|
## Documentation
|
|
222
222
|
|
|
@@ -224,23 +224,23 @@ See [Compliance Testing Guide](https://github.com/adriannoes/asap-protocol/blob/
|
|
|
224
224
|
- [Docs](docs/index.md) | [API Reference](docs/api-reference.md)
|
|
225
225
|
- [MCP Auth Bridge](docs/adapters/mcp-auth-bridge.md) — v2.5.0 opt-in JWT + capability grants for native stdio MCP
|
|
226
226
|
- [TypeScript client SDK](docs/sdks/typescript.md) — `@asap-protocol/client` (identity, capabilities, streaming, adapters)
|
|
227
|
-
- [Tutorials](https://github.com/
|
|
228
|
-
- [Migration from A2A/MCP](https://github.com/
|
|
229
|
-
- [Raw Fetch (non-Python)](https://github.com/
|
|
227
|
+
- [Tutorials](https://github.com/asap-protocol/asap-protocol/tree/main/docs/tutorials) — First agent to production checklist
|
|
228
|
+
- [Migration from A2A/MCP](https://github.com/asap-protocol/asap-protocol/blob/main/docs/migration.md)
|
|
229
|
+
- [Raw Fetch (non-Python)](https://github.com/asap-protocol/asap-protocol/blob/main/docs/raw-fetch.md) — Fetch registry.json and revoked_agents.json with curl/fetch; implement your own client.
|
|
230
230
|
|
|
231
231
|
**Deep Dive**
|
|
232
|
-
- [State Management](https://github.com/
|
|
233
|
-
- [Transport](https://github.com/
|
|
234
|
-
- [Identity Signing](https://github.com/
|
|
235
|
-
- [Observability](https://github.com/
|
|
232
|
+
- [State Management](https://github.com/asap-protocol/asap-protocol/blob/main/docs/state-management.md) | [Best Practices: Failover & Migration](https://github.com/asap-protocol/asap-protocol/blob/main/docs/best-practices/agent-failover-migration.md) | [Error Handling](https://github.com/asap-protocol/asap-protocol/blob/main/docs/error-handling.md)
|
|
233
|
+
- [Transport](https://github.com/asap-protocol/asap-protocol/blob/main/docs/transport.md) | [Security](https://github.com/asap-protocol/asap-protocol/blob/main/docs/security.md) | [Security Model](https://github.com/asap-protocol/asap-protocol/blob/main/docs/security/v1.1-security-model.md) (OAuth2 trust, Custom Claims)
|
|
234
|
+
- [Identity Signing](https://github.com/asap-protocol/asap-protocol/blob/main/docs/guides/identity-signing.md) | [Compliance Testing](https://github.com/asap-protocol/asap-protocol/blob/main/docs/guides/compliance-testing.md) | [Migration v1.1 to v1.2](https://github.com/asap-protocol/asap-protocol/blob/main/docs/guides/migration-v1.1-to-v1.2.md) | [mTLS](https://github.com/asap-protocol/asap-protocol/blob/main/docs/security/mtls.md)
|
|
235
|
+
- [Observability](https://github.com/asap-protocol/asap-protocol/blob/main/docs/observability.md) | [Testing](https://github.com/asap-protocol/asap-protocol/blob/main/docs/testing.md)
|
|
236
236
|
|
|
237
237
|
**Decisions & Operations**
|
|
238
|
-
- [ADRs](https://github.com/
|
|
239
|
-
- [Tech Stack](https://github.com/
|
|
240
|
-
- [Deployment](https://github.com/
|
|
238
|
+
- [ADRs](https://github.com/asap-protocol/asap-protocol/tree/main/docs/adr) — 19 Architecture Decision Records
|
|
239
|
+
- [Tech Stack](https://github.com/asap-protocol/asap-protocol/blob/main/engineering/architecture/tech-stack-decisions.md) — Rationale for Python, Pydantic, Next.js choices
|
|
240
|
+
- [Deployment](https://github.com/asap-protocol/asap-protocol/blob/main/docs/deployment/kubernetes.md) | [Troubleshooting](https://github.com/asap-protocol/asap-protocol/blob/main/docs/troubleshooting.md)
|
|
241
241
|
|
|
242
242
|
**Release**
|
|
243
|
-
- [Changelog](https://github.com/
|
|
243
|
+
- [Changelog](https://github.com/asap-protocol/asap-protocol/blob/main/CHANGELOG.md) | **[PyPI listing](https://pypi.org/project/asap-protocol/)** — `https://pypi.org/project/asap-protocol/` (install: `pip install asap-protocol`)
|
|
244
244
|
|
|
245
245
|
## CLI
|
|
246
246
|
|
|
@@ -261,38 +261,40 @@ See [docs/cli.md](docs/cli.md) for delegation tokens, schema validation, trace v
|
|
|
261
261
|
|
|
262
262
|
## Version History
|
|
263
263
|
|
|
264
|
-
High-level only — see **[Changelog](https://github.com/
|
|
264
|
+
High-level only — see **[Changelog](https://github.com/asap-protocol/asap-protocol/blob/main/CHANGELOG.md)** and the **[docs index](https://github.com/asap-protocol/asap-protocol/blob/main/docs/index.md#v11-features-api-reference--guides)** for full notes.
|
|
265
265
|
|
|
266
266
|
| Version | What shipped |
|
|
267
267
|
| :-- | :-- |
|
|
268
|
-
| **v2.5.
|
|
269
|
-
| **v2.5.
|
|
268
|
+
| **v2.5.6** | **Security & quality patch** — **[GitHub Release `v2.5.6`](https://github.com/asap-protocol/asap-protocol/releases/tag/v2.5.6)** · Lite Registry IssueOps envelope + endpoint SSRF, compliance open-redirect SSRF, constrained capability execute, rotate-key lifecycle race, deps + regression tests. npm `@asap-protocol/*` remain **2.4.1**. See [CHANGELOG](CHANGELOG.md#256---2026-10-01) and [Migration (v2.5.5 → v2.5.6)](docs/migration.md#upgrading-from-v255-to-v256) |
|
|
269
|
+
| **v2.5.5** | **Security & quality patch** — **[GitHub Release `v2.5.5`](https://github.com/asap-protocol/asap-protocol/releases/tag/v2.5.5)** · OpenAPI path-param climb, registry URN overwrite guard, marketplace SSRF DNS pin, capability-replace consent, fail-closed reactivate, Agent JWT persist/revoke races. npm `@asap-protocol/*` remain **2.4.1**. See [CHANGELOG](CHANGELOG.md#255---2026-09-11) and [Migration (v2.5.4 → v2.5.5)](docs/migration.md#upgrading-from-v254-to-v255) |
|
|
270
|
+
| **v2.5.4** | **Distribution Loop** — **[GitHub Release `v2.5.4`](https://github.com/asap-protocol/asap-protocol/releases/tag/v2.5.4)** · thin starters (`examples/starters/`), [Build for agents](docs/guides/build-for-agents.md), homepage agent-first CTAs, telemetry ops (no public metrics UI). See [CHANGELOG](CHANGELOG.md#254---2026-07-18), [PRD](product/prd/prd-v2.5.4-distribution-loop.md), and [Migration (v2.5.3 → v2.5.4)](docs/migration.md#upgrading-from-v253-to-v254) |
|
|
271
|
+
| **v2.5.3** | **Adapter Lab II** — **[GitHub Release `v2.5.3`](https://github.com/asap-protocol/asap-protocol/releases/tag/v2.5.3)** · workflow OpenAPI connectors + security guide, experimental MAF / NeMo guides, JSON-safe `-32602`, MCP example client DX. See [CHANGELOG](CHANGELOG.md#253---2026-07-14), [PRD](product/prd/prd-v2.5.3-adapter-lab-ii.md), and [Migration (v2.5.2 → v2.5.3)](docs/migration.md#upgrading-from-v252-to-v253) |
|
|
270
272
|
| **v2.5.2** | **Security & correctness follow-up** — opt-in operator API auth, `extra="forbid"` ingress, Redis JTI replay, web distributed rate limits, v2.5.1 CR follow-ups (#245–#249), registry signed-manifest/400 fixes. See [CHANGELOG](CHANGELOG.md#252---2026-07-08), [PRD](product/prd/prd-v2.5.2-security-follow-up.md), and [Migration (v2.5.1 → v2.5.2)](docs/migration.md#upgrading-from-v251) |
|
|
271
273
|
| **v2.5.1** | **Code quality patch** — behavior-preserving refactor (transport/server, client, websocket, SQLite storage, auth, integrations) + six correctness/security fixes (atomic `revoke_cascade`, `usage_events` DDL, unified Host-JWT verifier, **WS now enforces OAuth2**, OpenAPI handler cleanup, client `correlation_id` binding). Deprecated import paths removed in v2.6.0. See [CHANGELOG](CHANGELOG.md#251---2026-06-25) and [Migration (v2.5.0 → v2.5.1)](docs/migration.md#upgrading-from-v250-to-v251) |
|
|
272
|
-
| **v2.5.0.1** | **Compliance publish** — **[GitHub Release `v2.5.0.1`](https://github.com/
|
|
273
|
-
| **v2.5.0** | **MCP Auth Bridge** — **[GitHub Release `v2.5.0`](https://github.com/
|
|
274
|
+
| **v2.5.0.1** | **Compliance publish** — **[GitHub Release `v2.5.0.1`](https://github.com/asap-protocol/asap-protocol/releases/tag/v2.5.0.1)** · PyPI **`asap-compliance` 1.3.0** (`mcp-auth-bridge` profile; requires `asap-protocol>=2.5.0`). No `asap-protocol` API change. See [CHANGELOG](CHANGELOG.md#2501---2026-06-24) |
|
|
275
|
+
| **v2.5.0** | **MCP Auth Bridge** — **[GitHub Release `v2.5.0`](https://github.com/asap-protocol/asap-protocol/releases/tag/v2.5.0)** · opt-in `protect_server` for stdio MCP; Agent JWT + capability grants; reference example `examples/mcp_auth_bridge/`. See [CHANGELOG](CHANGELOG.md#250---2026-06-24) and [Migration (v2.4.1 → v2.5.0)](docs/migration.md#upgrading-from-v241-to-v250) |
|
|
274
276
|
| **v2.4.1** | **Security hardening** — OAuth2 `iss`/`aud`, fail-closed identity binding, web SSRF/redirect fixes, dependency bumps. See [CHANGELOG](CHANGELOG.md#241---2026-06-14) and [Migration (v2.4.0 → v2.4.1)](docs/migration.md#upgrading-from-v240-to-v241) |
|
|
275
277
|
| **v2.4.0** | **Edge-AI discovery** — optional `hardware` / `inference` manifest fields, registry mirror, marketplace filters, **`@asap-protocol/client@2.4.0`**, ShellClaw onboarding docs. See [CHANGELOG](CHANGELOG.md#240---2026-05-24) and [Migration (v2.3.x → v2.4.0)](docs/migration.md#upgrading-from-v23x-to-v240) |
|
|
276
|
-
| **v2.3.1** | **npm TS patch** — **[GitHub Release `v2.3.1`](https://github.com/
|
|
277
|
-
| **v2.3.0** | **OpenAPI Adapter** (`[openapi]`) · **TypeScript client** (`@asap-protocol/client`) · **Auto-Registration** · **Capability escalation** · **ASAP HTTP challenge** — see [CHANGELOG](https://github.com/
|
|
278
|
-
| **v2.2.1** | Opt-in **WebAuthn** (`asap-protocol[webauthn]`) · `asap compliance-check` & `asap audit export` · stricter `ResolvedAgent.run()` · `AuditChainBroken` · [pinned security deps](https://github.com/
|
|
278
|
+
| **v2.3.1** | **npm TS patch** — **[GitHub Release `v2.3.1`](https://github.com/asap-protocol/asap-protocol/releases/tag/v2.3.1)** · **`@asap-protocol/mastra`**, **`@asap-protocol/openai-agents`**, **`@asap-protocol/client@2.3.1`** (additive adapter exports). Python **2.3.0** unchanged. See [CHANGELOG](https://github.com/asap-protocol/asap-protocol/blob/main/CHANGELOG.md#231---2026-05-20) and [Migration (v2.3.0 → v2.3.1)](https://github.com/asap-protocol/asap-protocol/blob/main/docs/migration.md#upgrading-from-v230-to-v231) |
|
|
279
|
+
| **v2.3.0** | **OpenAPI Adapter** (`[openapi]`) · **TypeScript client** (`@asap-protocol/client`) · **Auto-Registration** · **Capability escalation** · **ASAP HTTP challenge** — see [CHANGELOG](https://github.com/asap-protocol/asap-protocol/blob/main/CHANGELOG.md#230---2026-05-04) and [Migration](https://github.com/asap-protocol/asap-protocol/blob/main/docs/migration.md#upgrading-from-v22x-to-v230) |
|
|
280
|
+
| **v2.2.1** | Opt-in **WebAuthn** (`asap-protocol[webauthn]`) · `asap compliance-check` & `asap audit export` · stricter `ResolvedAgent.run()` · `AuditChainBroken` · [pinned security deps](https://github.com/asap-protocol/asap-protocol/blob/main/SECURITY.md#dependency-policy) |
|
|
279
281
|
| **v2.2** | Per-runtime identity & capability auth · SSE `POST /asap/stream` · `ASAP-Version` · JSON-RPC batch · tamper-evident audit · async state stores · Compliance Harness v2 |
|
|
280
282
|
| **v2.1.1** | Patch: JWT allowlist · SQLite async bridge · optional Redis rate limits · web SSRF hardening |
|
|
281
283
|
| **v2.1** | `MarketClient` · framework extras (LangChain, CrewAI, LlamaIndex, …) · registry UX |
|
|
282
284
|
| **v2.0** | Marketplace web app · Lite Registry (GitHub Pages) · IssueOps · OAuth · verification flow |
|
|
283
285
|
| **v1.3** | `asap delegation create` / `revoke` |
|
|
284
|
-
| **v1.2** | Ed25519 manifests · trust levels · optional mTLS · [Compliance Harness](https://github.com/
|
|
286
|
+
| **v1.2** | Ed25519 manifests · trust levels · optional mTLS · [Compliance Harness](https://github.com/asap-protocol/asap-protocol/blob/main/asap-compliance/README.md) |
|
|
285
287
|
| **v1.1** | OAuth2 · WebSocket · discovery (well-known + Lite Registry) · SQLite state · webhooks |
|
|
286
288
|
|
|
287
289
|
## 🔭 What's Next?
|
|
288
290
|
|
|
289
291
|
The [agentic marketplace](https://asap-protocol.com/) and Lite Registry are live. The **v2.5.x train** focuses on interop and adoption:
|
|
290
292
|
|
|
291
|
-
- **
|
|
293
|
+
- **Formal Spec & Interop** — RFC, introspection, privacy (PRD [prd-v2.5.5-formal-spec-interop.md](product/prd/prd-v2.5.5-formal-spec-interop.md); library **2.5.6** is the security/quality patch above)
|
|
292
294
|
- **`@asap-protocol/mcp-auth`** (npm) — HTTP/SSE MCP middleware
|
|
293
|
-
- **Formal spec track**
|
|
295
|
+
- **Formal spec track** — introspection, privacy, cross-protocol interop on the path to v3.0 economy
|
|
294
296
|
|
|
295
|
-
See the [v2.5 roadmap PRD](https://github.com/
|
|
297
|
+
See the [v2.5 roadmap PRD](https://github.com/asap-protocol/asap-protocol/blob/main/product/prd/prd-v2.5-roadmap.md) and [ADR index](https://github.com/asap-protocol/asap-protocol/blob/main/product/decision-records/README.md).
|
|
296
298
|
|
|
297
299
|
## Contributing
|
|
298
300
|
|
|
@@ -300,13 +302,13 @@ See the [v2.5 roadmap PRD](https://github.com/adriannoes/asap-protocol/blob/main
|
|
|
300
302
|
|
|
301
303
|
Every contribution, from bug reports to feature suggestions, documentation improvements and code contributions, makes a real difference.
|
|
302
304
|
|
|
303
|
-
Check out our [contributing guidelines](https://github.com/
|
|
305
|
+
Check out our [contributing guidelines](https://github.com/asap-protocol/asap-protocol/blob/main/CONTRIBUTING.md) to get started. It's easier than you think! 🚀
|
|
304
306
|
|
|
305
307
|
## Contact
|
|
306
308
|
|
|
307
309
|
| Channel | Use for |
|
|
308
310
|
| --- | --- |
|
|
309
|
-
| [GitHub Discussions](https://github.com/
|
|
311
|
+
| [GitHub Discussions](https://github.com/asap-protocol/asap-protocol/discussions) or [Issues](https://github.com/asap-protocol/asap-protocol/issues) | Public questions, bugs, and feature ideas |
|
|
310
312
|
| [info@asap-protocol.com](mailto:info@asap-protocol.com) | Private coordination — protocol, marketplace, partnerships, press |
|
|
311
313
|
| [SECURITY.md](SECURITY.md) | Security vulnerabilities only — **do not** use email or public issues |
|
|
312
314
|
|
|
@@ -316,8 +318,8 @@ See [PRIVACY.md](PRIVACY.md) for how the public site and maintainer telemetry us
|
|
|
316
318
|
|
|
317
319
|
## License
|
|
318
320
|
|
|
319
|
-
This project is licensed under the Apache 2.0 License - see the [license](https://github.com/
|
|
321
|
+
This project is licensed under the Apache 2.0 License - see the [license](https://github.com/asap-protocol/asap-protocol/blob/main/LICENSE) file for details.
|
|
320
322
|
|
|
321
323
|
---
|
|
322
324
|
|
|
323
|
-
**Built with [Cursor](https://cursor.com/)**, with Composer, Opus, Gemini, Kimi and more.
|
|
325
|
+
**Built with [Cursor](https://cursor.com/)**, with Composer, Grok, Opus, Gemini, Kimi and more.
|