capiscio-sdk 2.3.0__tar.gz → 2.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/.github/workflows/integration-tests.yml +1 -0
  2. capiscio_sdk-2.4.0/CHANGELOG.md +284 -0
  3. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/PKG-INFO +1 -1
  4. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/__init__.py +1 -1
  5. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/_rpc/client.py +406 -4
  6. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/badge.py +85 -15
  7. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/integrations/fastapi.py +18 -6
  8. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/validators/message.py +4 -3
  9. capiscio_sdk-2.4.0/docs/api-reference.md +208 -0
  10. capiscio_sdk-2.4.0/docs/guides/mcp.md +283 -0
  11. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/docs/guides/scoring.md +1 -1
  12. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/mkdocs.yml +5 -0
  13. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/pyproject.toml +1 -1
  14. capiscio_sdk-2.4.0/tests/integration/test_mcp_service.py +377 -0
  15. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_badge.py +79 -5
  16. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_fastapi_integration.py +41 -0
  17. capiscio_sdk-2.3.0/CHANGELOG.md +0 -156
  18. capiscio_sdk-2.3.0/docs/api-reference.md +0 -79
  19. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/.github/copilot-instructions.md +0 -0
  20. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/.github/markdown-link-check-config.json +0 -0
  21. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/.github/workflows/docs.yml +0 -0
  22. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/.github/workflows/pr-checks.yml +0 -0
  23. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/.github/workflows/publish.yml +0 -0
  24. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/.gitignore +0 -0
  25. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/.python-version +0 -0
  26. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/CONTRIBUTING.md +0 -0
  27. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/Dockerfile.test +0 -0
  28. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/LICENSE +0 -0
  29. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/QUICK_REFERENCE.md +0 -0
  30. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/README.md +0 -0
  31. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/RELEASE_GUIDE.md +0 -0
  32. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/SECURITY.md +0 -0
  33. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/_rpc/__init__.py +0 -0
  34. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/_rpc/gen/__init__.py +0 -0
  35. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/_rpc/process.py +0 -0
  36. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/badge_keeper.py +0 -0
  37. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/config.py +0 -0
  38. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/dv.py +0 -0
  39. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/errors.py +0 -0
  40. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/executor.py +0 -0
  41. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/infrastructure/__init__.py +0 -0
  42. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/infrastructure/cache.py +0 -0
  43. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/infrastructure/rate_limiter.py +0 -0
  44. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/py.typed +0 -0
  45. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/scoring/__init__.py +0 -0
  46. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/scoring/availability.py +0 -0
  47. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/scoring/compliance.py +0 -0
  48. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/scoring/trust.py +0 -0
  49. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/scoring/types.py +0 -0
  50. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/simple_guard.py +0 -0
  51. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/types.py +0 -0
  52. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/validators/__init__.py +0 -0
  53. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/validators/_core.py +0 -0
  54. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/validators/agent_card.py +0 -0
  55. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/validators/certificate.py +0 -0
  56. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/validators/protocol.py +0 -0
  57. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/validators/semver.py +0 -0
  58. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/validators/signature.py +0 -0
  59. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/capiscio_sdk/validators/url_security.py +0 -0
  60. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/docs/assets/.!58931!favicon.ico +0 -0
  61. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/docs/assets/favicon.ico +0 -0
  62. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/docs/assets/logo.png +0 -0
  63. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/docs/getting-started/concepts.md +0 -0
  64. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/docs/getting-started/installation.md +0 -0
  65. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/docs/getting-started/quickstart.md +0 -0
  66. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/docs/guides/badge-verification.md +0 -0
  67. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/docs/guides/configuration.md +0 -0
  68. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/docs/includes/abbreviations.md +0 -0
  69. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/docs/index.md +0 -0
  70. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/docs/javascripts/extra.js +0 -0
  71. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/docs/stylesheets/extra.css +0 -0
  72. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/docs/stylesheets/unified.css +0 -0
  73. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/examples/README.md +0 -0
  74. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/examples/secure_ping_pong/README.md +0 -0
  75. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/examples/secure_ping_pong/client.py +0 -0
  76. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/examples/secure_ping_pong/server.py +0 -0
  77. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/examples/simple_agent/README.md +0 -0
  78. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/examples/simple_agent/agent_executor.py +0 -0
  79. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/examples/simple_agent/main.py +0 -0
  80. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/examples/simple_agent/requirements.txt +0 -0
  81. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/examples/simple_agent/test_client.py +0 -0
  82. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/__init__.py +0 -0
  83. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/e2e/__init__.py +0 -0
  84. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/integration/Dockerfile.test +0 -0
  85. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/integration/README.md +0 -0
  86. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/integration/__init__.py +0 -0
  87. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/integration/docker-compose.yml +0 -0
  88. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/integration/requirements.txt +0 -0
  89. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/integration/test_badge_keeper.py +0 -0
  90. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/integration/test_dv_badge_flow.py +0 -0
  91. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/integration/test_dv_order_api.py +0 -0
  92. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/integration/test_dv_sdk.py +0 -0
  93. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/integration/test_grpc_scoring.py +0 -0
  94. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/integration/test_real_executor.py +0 -0
  95. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/integration/test_server_integration.py +0 -0
  96. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/integration/test_simple_guard.py +0 -0
  97. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/__init__.py +0 -0
  98. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_agent_card.py +0 -0
  99. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_badge_keeper.py +0 -0
  100. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_cache.py +0 -0
  101. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_certificate.py +0 -0
  102. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_config.py +0 -0
  103. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_core_validator.py +0 -0
  104. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_errors.py +0 -0
  105. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_executor.py +0 -0
  106. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_message_validator.py +0 -0
  107. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_pop_badge.py +0 -0
  108. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_protocol_validator.py +0 -0
  109. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_rate_limiter.py +0 -0
  110. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_semver_validator.py +0 -0
  111. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_signature_validator.py +0 -0
  112. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_simple_guard.py +0 -0
  113. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_types.py +0 -0
  114. {capiscio_sdk-2.3.0 → capiscio_sdk-2.4.0}/tests/unit/test_url_security.py +0 -0
@@ -107,6 +107,7 @@ jobs:
107
107
  --ignore=tests/integration/test_dv_badge_flow.py \
108
108
  --ignore=tests/integration/test_dv_order_api.py \
109
109
  --ignore=tests/integration/test_dv_sdk.py \
110
+ --ignore=tests/integration/test_mcp_service.py \
110
111
  -v --tb=short --junit-xml=/workspace/test-results.xml
111
112
 
112
113
  - name: Upload test results
@@ -0,0 +1,284 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [2.4.0] - 2026-01-18
11
+
12
+ ### Fixed
13
+ - **RFC-002 Alignment**: TrustLevel enum values now match RFC-002 §5 exactly
14
+ - **BadgeClaims**: Aligned claim field names with RFC-002 specification
15
+ - **to_dict()**: Now preserves `cnf` claim for IAL-1 badges (round-trip serialization)
16
+ - **has_key_binding**: Consistently checks both `ial=='1'` AND `cnf` presence
17
+
18
+ ### Added
19
+ - **MCP Service Client**: RFC-006/RFC-007 operations via MCP protocol
20
+ - **MCP gRPC Client**: Server identity operations
21
+
22
+ ## [2.3.1] - 2025-01-14
23
+
24
+ ### Fixed
25
+ - Fixed `__version__` in package `__init__.py` (was 0.3.1, now 2.3.1)
26
+ - Aligned all version references across package metadata
27
+
28
+ ## [0.1.0] - 2025-01-10
29
+
30
+ ### Added
31
+ - **Comprehensive Integration Tests (26 tests)**
32
+ - Real A2A SDK integration testing with official types
33
+ - All Part types tested: TextPart, FilePart (bytes/URI), DataPart, mixed parts
34
+ - Both role values tested: user, agent
35
+ - Optional fields tested: contextId, taskId, metadata
36
+ - Edge cases: empty text, long text (10KB), Unicode/special characters
37
+ - Security patterns: XSS attempts, SQL injection, oversized messages (100+ parts), null bytes
38
+ - Malformed messages: invalid roles, empty messageId, empty parts array
39
+ - Coverage: All tests passing in ~1.27 seconds
40
+
41
+ - **GitHub Actions CI/CD**
42
+ - `pr-checks.yml`: Comprehensive PR validation (Python 3.10-3.13, linting, type checking, tests, security scanning)
43
+ - Enhanced `publish.yml`: Now runs full test suite before publishing to PyPI
44
+ - `docs.yml`: Automated documentation deployment (GitHub Pages, Cloudflare Pages)
45
+
46
+ - **Foundation Layer**
47
+ - Core types: `ValidationResult`, `ValidationIssue`, `ValidationSeverity`, `RateLimitInfo`, `CacheEntry`
48
+ - Error hierarchy: 7 exception classes for different security scenarios
49
+ - Configuration system with 4 presets: `development()`, `production()`, `strict()`, `from_env()`
50
+
51
+ - **Validators**
52
+ - `MessageValidator`: Validates A2A v0.3.0 message structure
53
+ - Required fields: `messageId` (non-empty string), `role` (enum), `parts` (array)
54
+ - Optional fields: `contextId`, `taskId`, `metadata`
55
+ - Supports all Part types: `TextPart`, `FilePart` (FileWithBytes/FileWithUri), `DataPart`
56
+ - Part validation: kind discriminator ("text"|"file"|"data") with type-specific validation
57
+ - `ProtocolValidator`: Validates protocol version, headers, and message types
58
+
59
+ - **Infrastructure**
60
+ - `ValidationCache`: TTL-based in-memory cache with invalidation support
61
+ - `RateLimiter`: Token bucket algorithm with per-identifier rate limiting
62
+ - Configurable cache size and TTL
63
+
64
+ - **Security Executor**
65
+ - `CapiscIOSecurityExecutor`: Main wrapper for agent executors
66
+ - Three integration patterns:
67
+ - Minimal: `secure(agent)` - one-liner integration
68
+ - Explicit: `CapiscIOSecurityExecutor(agent, config)` - full control
69
+ - Decorator: `@secure_agent(config)` - pythonic decorator pattern
70
+ - Configurable fail modes: `block`, `monitor`, `log`
71
+ - Request rate limiting with identifier-based buckets
72
+ - Validation result caching for performance
73
+
74
+ - **Documentation**
75
+ - Complete rewrite of all examples to use official A2A SDK types
76
+ - Updated configuration guide with correct A2A message fields
77
+ - Comprehensive quickstart with real-world integration examples
78
+ - API reference documentation
79
+ - Apache 2.0 license, Contributing guidelines, Security policy
80
+
81
+ ### Technical Details
82
+ - Python 3.10+ support (tested on 3.10, 3.11, 3.12, 3.13)
83
+ - Type hints with `py.typed` marker
84
+ - Pydantic models for validation
85
+ - Token bucket rate limiting algorithm
86
+ - TTL-based caching with LRU eviction
87
+ - Delegate pattern for attribute access
88
+
89
+ ### Test Coverage
90
+ - **Total: 150 tests, 99.3% passing (149 passing, 1 skipped)**
91
+ - Unit tests: 124 tests (including 14 MessageValidator tests)
92
+ - Integration tests: 26 tests (all passing)
93
+ - Skipped: 1 module (test_executor.py - covered by integration tests)
94
+
95
+ ### Release Notes
96
+ This is an **early 0.1.0 release**. While the middleware has comprehensive test coverage (150 tests) and validates all official A2A message structures correctly, it has not yet been battle-tested in production environments. We recommend:
97
+
98
+ - ✅ **Safe for**: Development environments, testing, evaluation
99
+ - ⚠️ **Use with monitoring**: Staging environments, non-critical production
100
+ - ❌ **Not yet ready for**: Mission-critical production without extensive internal testing
101
+
102
+ **Planned for v1.0**: Load testing, stress testing, concurrent request testing, performance benchmarking, production hardening based on real-world feedback
103
+
104
+ ### Installation
105
+ ```bash
106
+ pip install capiscio-sdk==0.1.0
107
+ ```
108
+
109
+ ---
110
+
111
+ ## [Unreleased]
112
+
113
+ ## [2.3.0] - 2025-01-14
114
+
115
+ **Major Release** - Complete Trust Badge ecosystem with gRPC backend, PoP protocol, and DV badge flow.
116
+
117
+ This release introduces the **capiscio-core gRPC integration**, enabling high-performance badge operations through a native Go backend. The SDK now provides a complete implementation of RFC-002 (Trust Badges) and RFC-003 (Proof of Possession).
118
+
119
+ ### Added
120
+
121
+ #### Trust Badge API (`capiscio_sdk.badge`)
122
+ - **`verify_badge()`** - Full badge verification with signature, expiration, and revocation checks
123
+ - **`parse_badge()`** - Parse badge claims without verification (for inspection)
124
+ - **`request_badge()` / `request_badge_sync()`** - Request new badges from CA
125
+ - **`request_pop_badge()` / `request_pop_badge_sync()`** - RFC-003 Proof of Possession badge requests
126
+ - **`start_badge_keeper()`** - Start automatic badge renewal
127
+ - **`BadgeClaims`** dataclass with full RFC-002 claim support
128
+ - **`VerifyOptions`** - Configurable verification (audience, issuers, clock skew)
129
+ - **`VerifyMode`** enum - `ONLINE`, `OFFLINE`, `HYBRID` verification modes
130
+ - **`TrustLevel`** enum - Level 1 (DV), Level 2 (OV), Level 3 (EV)
131
+
132
+ #### Badge Lifecycle Management (`capiscio_sdk.badge_keeper`)
133
+ - **`BadgeKeeper`** class - Automatic badge renewal with background thread
134
+ - Configurable renewal threshold (renew N seconds before expiry)
135
+ - Exponential backoff retry on failure
136
+ - Callback support for badge updates (`on_renew`)
137
+ - Integration with `SimpleGuard` for seamless auth
138
+ - **`BadgeKeeperConfig`** - Full configuration options (TTL, trust level, output file)
139
+
140
+ #### Domain Validation API (`capiscio_sdk.dv`)
141
+ - **`create_dv_order()`** - Create DV badge order with HTTP-01 or DNS-01 challenge
142
+ - **`get_dv_order()`** - Check order status
143
+ - **`finalize_dv_order()`** - Complete validation and receive grant JWT
144
+ - **`DVOrder`** dataclass - Order details (challenge token, validation URL, DNS record)
145
+ - **`DVGrant`** dataclass - Signed grant JWT for badge issuance
146
+
147
+ #### gRPC Backend (`capiscio_sdk._rpc`)
148
+ - **`CapiscioRPCClient`** - High-level gRPC client for capiscio-core
149
+ - Auto-starts local capiscio-core binary when needed
150
+ - Connection pooling and health checks
151
+ - Context manager support (`with CapiscioRPCClient() as client:`)
152
+ - **Generated Protocol Buffers** for all services:
153
+ - `BadgeService` - Badge parsing, verification, issuance
154
+ - `DIDService` - DID parsing and resolution
155
+ - `TrustService` - Trust level operations
156
+ - `RevocationService` - Badge revocation checks
157
+ - `ScoringService` - Trust scoring calculations
158
+ - `SimpleGuardService` - Request signing and verification
159
+ - `RegistryService` - Agent registry operations
160
+ - **`ProcessManager`** - Manages capiscio-core subprocess lifecycle
161
+
162
+ #### Core Validator (`capiscio_sdk.validators`)
163
+ - **`CoreValidator`** class - Go-backed validation for agent cards
164
+ - **`validate_agent_card()`** - One-liner validation using Go core
165
+ - RFC-004 Agent Card schema validation
166
+ - Much faster than pure-Python validation
167
+
168
+ #### RFC-002 v1.3 §7.5 Staleness Options
169
+ - Configurable badge staleness thresholds
170
+ - `max_age` parameter for verification
171
+ - Grace period support for expiring badges
172
+
173
+ ### Changed
174
+ - **Version Alignment**: SDK version now matches other CapiscIO products (capiscio-server, capiscio-ui, capiscio-core v2.3.0)
175
+ - **SimpleGuard Refactoring**:
176
+ - Now uses gRPC backend for cryptographic operations
177
+ - Improved request signing with `sign_request()` / `verify_request()`
178
+ - Better error messages with RFC references
179
+ - **Scoring Module**: Enhanced with gRPC-backed calculations
180
+
181
+ ### Fixed
182
+ - **CI/CD Pipeline**:
183
+ - Publish workflow now runs only unit tests (prevents false failures from missing infrastructure)
184
+ - Integration tests moved to dedicated workflow with Docker infrastructure
185
+ - **Lint Issues**: Fixed all ruff warnings, updated to latest ruff config
186
+ - **FastAPI Integration**: Improved middleware error handling
187
+
188
+ ### Infrastructure
189
+ - **New Integration Test Suite** with Docker Compose:
190
+ - `test_badge_keeper.py` - Badge lifecycle tests
191
+ - `test_dv_badge_flow.py` - Full DV flow E2E tests
192
+ - `test_dv_order_api.py` - DV API tests
193
+ - `test_dv_sdk.py` - SDK integration tests
194
+ - `test_grpc_scoring.py` - gRPC scoring tests
195
+ - `test_server_integration.py` - Server integration tests
196
+ - `test_simple_guard.py` - SimpleGuard tests
197
+ - **New Unit Tests**:
198
+ - `test_badge.py` - Badge API unit tests
199
+ - `test_badge_keeper.py` - BadgeKeeper unit tests
200
+ - `test_core_validator.py` - CoreValidator tests
201
+ - `test_pop_badge.py` - PoP protocol tests
202
+ - **GitHub Actions Workflows**:
203
+ - `integration-tests.yml` - Full integration tests with capiscio-server + postgres + capiscio-core
204
+
205
+ ### Documentation
206
+ - **Comprehensive gRPC Integration Guide** (`docs/guides/badge-verification.md`)
207
+ - **Badge Verification Guide** with code examples
208
+ - **GitHub Copilot Instructions** for AI-assisted development
209
+ - **API Reference** updates for all new modules
210
+
211
+ ### Dependencies
212
+ - Added `grpcio` and `grpcio-tools` for gRPC support
213
+ - Added `protobuf` for Protocol Buffer serialization
214
+ - Updated `cryptography` to latest version
215
+
216
+ ### Statistics
217
+ - **+12,568 lines of code** added
218
+ - **63 files** changed
219
+ - **7 new modules** added
220
+ - **1,321 line** gRPC client implementation
221
+ - **737 line** badge API implementation
222
+ - **304 line** BadgeKeeper implementation
223
+ - **296 line** DV API implementation
224
+
225
+ ### Migration from v0.3.x
226
+ This release is backwards compatible. Existing `SimpleGuard` and `CapiscioSecurityExecutor` usage continues to work. New features are additive.
227
+
228
+ To use new badge features:
229
+ ```python
230
+ from capiscio_sdk import verify_badge, BadgeKeeper, create_dv_order
231
+
232
+ # Verify an incoming badge
233
+ result = verify_badge(token, trusted_issuers=["https://registry.capisc.io"])
234
+
235
+ # Auto-renew badges
236
+ keeper = BadgeKeeper(api_url="...", api_key="...", agent_id="...")
237
+ keeper.start()
238
+
239
+ # Get a DV badge
240
+ order = create_dv_order(domain="example.com", challenge_type="http-01", jwk=jwk)
241
+ ```
242
+
243
+ ## [0.3.1] - 2025-11-23
244
+
245
+ ### Fixed
246
+ - **Release Automation**: Bumped version to trigger fresh GitHub Release and PyPI publication with correct artifacts.
247
+
248
+ ## [0.3.0] - 2025-11-22
249
+
250
+ ### Added
251
+ - **SimpleGuard Security Strategy**:
252
+ - **Identity**: Ed25519 Trust Badge verification (`X-Capiscio-Badge` header per RFC-002 §9.1).
253
+ - **Integrity**: SHA-256 Body Hash verification (`bh` claim) to prevent payload tampering.
254
+ - **Freshness**: Replay protection using `exp` (expiration) and `iat` (issued at) claims with a 60-second window.
255
+ - **Zero Config**: Secure by default with minimal setup.
256
+ - **FastAPI Integration**:
257
+ - `CapiscioMiddleware`: Automatic request validation and identity injection into `request.state.agent_id`.
258
+ - `Server-Timing` header support for telemetry (verification time).
259
+ - **Telemetry**:
260
+ - Added `dur` (duration) metric to `Server-Timing` header for monitoring security overhead.
261
+ - **Documentation**:
262
+ - Updated `README.md` with "Enforcement First" strategy.
263
+ - Updated `SECURITY.md` with threat model and verification steps.
264
+ - Added `examples/secure_ping_pong` demo.
265
+
266
+ ### Changed
267
+ - **Breaking Change**: Shifted from "Validation" focus to "Enforcement" focus.
268
+ - Updated `pyproject.toml` dependencies to include `cryptography` and `pyjwt`.
269
+
270
+ ### Planned for v1.0.0
271
+ - Full A2A v1.0 compliance
272
+ - Production-ready hardening
273
+ - Performance optimizations
274
+ - Comprehensive documentation
275
+ - CI/CD pipeline
276
+ - PyPI release
277
+
278
+ ---
279
+
280
+ [2.3.0]: https://github.com/capiscio/capiscio-sdk-python/releases/tag/v2.3.0
281
+ [0.3.1]: https://github.com/capiscio/capiscio-sdk-python/releases/tag/v0.3.1
282
+ [0.3.0]: https://github.com/capiscio/capiscio-sdk-python/releases/tag/v0.3.0
283
+ [0.1.0]: https://github.com/capiscio/capiscio-sdk-python/releases/tag/v0.1.0
284
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: capiscio-sdk
3
- Version: 2.3.0
3
+ Version: 2.4.0
4
4
  Summary: Runtime security middleware for A2A agents
5
5
  Project-URL: Homepage, https://capisc.io
6
6
  Project-URL: Documentation, https://docs.capisc.io/sdk-python
@@ -14,7 +14,7 @@ Example:
14
14
  >>> result = validate_agent_card(card_dict) # Uses Go core
15
15
  """
16
16
 
17
- __version__ = "0.3.1"
17
+ __version__ = "2.3.1"
18
18
 
19
19
  # Core exports
20
20
  from .executor import CapiscioSecurityExecutor, secure, secure_agent