[3.3.1] - 2025-04-14
Added
- Allow passing ToolId when attaching tools throughout the SDK
- Add
AnyOf(tag)andAllOf(tag)modifiers for explicit control over tag dependency semantics independ_on()—AnyOfrequires at least one tagged member to be active,AllOfrequires all of them (bareTagdefaults toAllOf) - Add
depend_on_any()toGuideline,Tag, andJourneyfor OR dependency relationships — at least one target must be active. Multipledepend_on_any()calls create independent OR groups that are AND'd together - Add event loop health monitoring to
/healthzendpoint — measures callback latency and reportshealthy,degraded, orunhealthystatus with peak latency over a configurable window - Add resolution tracking to the relational resolver — every entity that enters resolution gets a
Resolutionwith aResolutionKind(NONE,DEPRIORITIZED,UNMET_DEPENDENCY_ALL,UNMET_DEPENDENCY_ANY,ENTAILED) and structuredResolutionDetails(relationship ID, target IDs) explaining why
Changed
- Split
RelationshipEntityKind.TAGintoTAG_ALLandTAG_ANYto support explicit tag dependency semantics at the core level (existingTAGentries treated asTAG_ALLfor 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()returningNonewhen 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