v3.3.1
sipeed/picoclawv3.3.1Apr 14, 2026by kichanyurd
AI Summary
Enhances the SDK with health monitoring, dependency resolution tracking, and tool ID passing, while fixing several propagation and startup bugs.
Key Highlights
- Added ToolId passing when attaching tools throughout the SDK
- Added event loop health monitoring to /healthz endpoint
- Added resolution tracking to the relational resolver
- Fixed priority and dependency relationships propagating through inactive intermediaries
- Fixed SDK startup appearing stuck at 100% after evaluations
Breaking Changes
- Split `RelationshipEntityKind.TAG` into `TAG_ALL` and `TAG_ANY`
New Features
- AnyOf(tag) and AllOf(tag) modifiers for tag dependency semantics
- depend_on_any() method for OR dependency relationships
- Event loop health monitoring
- Detailed resolution tracking with ResolutionKind and ResolutionDetails
Full Release Notes
## [3.3.1] - 2026-04-14 ### Added - Allow passing ToolId when attaching tools throughout the SDK - Add `AnyOf(tag)` and `AllOf(tag)` modifiers for explicit control over tag dependency semantics in `depend_on()` — `AnyOf` requires at least one tagged member to be active, `AllOf` requires all of them (bare `Tag` defaults to `AllOf`) - Add `depend_on_any()` to `Guideline`, `Tag`, and `Journey` for OR dependency relationships — at least one target must be active. Multiple `depend_on_any()` calls create independent OR groups that are AND'd together - Add event loop health monitoring to `/healthz` endpoint — measures callback latency and reports `healthy`, `degraded`, or `unhealthy` status with peak latency over a configurable window - Add resolution tracking to the relational resolver — every entity that enters resolution gets a `Resolution` with a `ResolutionKind` (`NONE`, `DEPRIORITIZED`, `UNMET_DEPENDENCY_ALL`, `UNMET_DEPENDENCY_ANY`, `ENTAILED`) and structured `ResolutionDetails` (relationship ID, target IDs) explaining why ### Changed - Split `RelationshipEntityKind.TAG` into `TAG_ALL` and `TAG_ANY` to support explicit tag dependency semantics at the core level (existing `TAG` entries treated as `TAG_ALL` for backwards compatibility) ### Fixed - Fix priority and dependency relationships propagating through inactive intermediaries — only direct relationships now affect resolution, consistent with the reinstatement principle from argumentation theory - Fix entailment recording only the highest-scoring source when multiple guidelines entail the same target — all entailing relationships are now recorded in resolution details - Fix dep-failed guidelines not recovering when entailment satisfies their dependency target in a later iteration - Fix SDK startup appearing stuck at 100% after evaluations — add "Applying evaluations" progress bar for the metadata-writing phase - Fix `Variable.get_value()` returning `None` when called from a retriever, caused by retrievers starting before context variables were loaded - Fix journey tool-state auto-advancing even when the tool did not run