v3.3.0

UseInterstellar/Interstellarv3.3.0Mar 15, 2026by kichanyurd

AI Summary

This release introduces significant enhancements to agent planning and tagging capabilities, deprecates OpenAPI tool services, and resolves multiple stability and performance issues.

Key Highlights

  • Added per-agent planners for custom behavior
  • Implemented comprehensive tag-based dependency and priority relationships
  • Deprecated OpenAPI tool services in favor of SDK tool services
  • Added transient guidelines and programmatic agent message generation

Breaking Changes

  • Changed `tags` field type from `Sequence[TagId]` to `Sequence[Tag]` in SDK classes
  • Changed `Tag.preamble()` return type from `TagId` to `Tag`
  • Changed `reevaluate_after()` signature to accept multiple tools (`*tools`)
  • OpenAPI tool services are deprecated

New Features

  • Per-agent planners via `Server.create_agent(planner=...)`
  • Tag relationship methods: `Tag.depend_on()`, `Tag.exclude()`, `Tag.prioritize_over()`
  • Tag-based reevaluation support via `Tag.reevaluate_after()`
  • Transient guidelines support for dynamic context injection
  • Customer and Session update methods in SDK
  • Programmatic agent message generation via `Agent.utter()`
  • Name-based filtering for tags
  • Enforced tag name uniqueness in `TagStore`

Full Release Notes

## [3.3.0] - 2026-03-15

### Added

- Add per-agent planners via `Server.create_agent(planner=...)`, allowing each agent to use a custom `Planner` implementation
- Accept `Tag` as a target in `depend_on()`, `exclude()`, and `prioritize_over()` on both `Guideline` and `Tag`, enabling relationships that target all guidelines sharing a custom tag
- Add `Tag.depend_on()`, `Tag.exclude()`, and `Tag.prioritize_over()` methods to the SDK, enabling tag-based dependency and priority relationships with guidelines and journeys
- Support custom TAG as source for DEPENDENCY relationships in the relational resolver
- Add `tags` parameter to `create_guideline`, `create_observation`, and `create_journey` on both `Agent` and `Journey`, allowing custom tags to be attached to entities at creation time
- Add `Tag.reevaluate_after()` method to the SDK, enabling tag-based reevaluation relationships with tools
- Add tag-based reevaluation support in the engine: when a tool fires, all guidelines carrying a tag that has a reevaluation relationship with that tool are now re-evaluated
- Add staged_events to GuidelineMatchingContext in SDK
- Add `priority` property to guidelines and journeys for priority-based filtering in the relational resolver
- Add transient guidelines (renamed from tool-provided guidelines), allowing tools to dynamically inject behavioral guidelines into the agent's context
- Add `Agent.utter()` to the SDK, enabling programmatic agent message generation with transient guidelines
- Add `Customer.update()` and `CustomerMetadata` to the SDK, allowing tools to update customer name and metadata
- Add `Session.update()`, `SessionMetadata`, and `SessionLabels` to the SDK, allowing tools to update session properties, metadata, and labels
- Add `customer`, `agent`, `mode`, and `title` properties to SDK `Session` class
- Add `Server.get_tag()` to the SDK, supporting lookup by either `id` or `name`
- Add name-based filtering to `TagStore.list_tags()` and the `GET /tags` API endpoint via an optional `name` query parameter
- Enforce tag name uniqueness in `TagStore`, raising an error when creating a tag with a duplicate name

### Changed

- Made extended thinking indicator optional in perceived performance policy
- Change `reevaluate_after()` on `Tag` and `Guideline` to accept multiple tools (`*tools`) and return `Sequence[Relationship]`
- Change `tags` field type from `Sequence[TagId]` to `Sequence[Tag]` on `Guideline`, `Journey`, `Capability`, `Term`, `Variable`, `Customer`, and `Agent` in the SDK
- Change `Tag.preamble()` to return a full `Tag` object instead of a `TagId`
- Upgrade MCP service and bump dependency versions to resolve security vulnerabilities

### Deprecated

- OpenAPI tool services are now deprecated; please migrate to SDK tool services

### Fixed

- Fix deadlock when sending a new message right after a preamble
- Fix transitive filtering in relational resolver for custom tag dependency targets (guidelines depending on a custom tag are now correctly deactivated when a tagged member is deprioritized)
- Fix SSE `read_event` endpoint stalling after first streaming chunk until full completion
- Fix response analysis logs not always reaching the integrated UI
- Fix guideline formatting in canned response and streaming modes when condition is absent
- Fix AzureService small text embedding dimension size
- Fix onnxruntime compatibility with Python 3.10 and transformers 5.x type changes
- Fix agent intention proposer prompt clarification
- Fix embedding LRU cache eviction corrupting the length index when entries share the same text length
- Fix LiteLLMEmbedder failing to resolve via lagom container when LITELLM_EMBEDDING_MODEL_NAME is set
- Fix non-consequential tool calls being rejected when optional parameters are missing

### Removed

- Remove stale `parlant-test` entry point and testing framework documentation from README