Skip to content

feat(agent): dialogue state and referential resolution (Slice 6) - #273

Merged
panviktor merged 1 commit into
mainfrom
feat/dialogue-state-slice6
Apr 4, 2026
Merged

panviktor merged 1 commit into
mainfrom
feat/dialogue-state-slice6

Conversation

@panviktor

Copy link
Copy Markdown
Owner

Summary

Phase 4.6 Slice 6. Session-scoped working memory for short follow-ups.

  • DialogueState: focus_entities, comparison_set, slots, tool_subjects
  • DialogueStateStore: in-memory with 30min TTL
  • Entity extraction: services, cities (with "and" split for comparisons), environments
  • Wired into channels via InboundMessagePorts

Fixes "and the second one?", "restart it", "which city?" failures.

Test plan

  • cargo clippy -p synapse_domain --lib -- -D warnings — clean
  • cargo test -p synapse_domain --lib — 480 passed (+8 new)
  • cargo check --features channel-matrix — zero new errors

🤖 Generated with Claude Code

Phase 4.6 Slice 6. Session-scoped working memory for short follow-ups.

Domain types:
- DialogueState: focus_entities, comparison_set, slots, tool_subjects
- FocusEntity: kind + name (city, service, environment, etc.)
- DialogueSlot: named key-value pairs (location, timezone)

Service:
- DialogueStateStore: in-memory HashMap with TTL expiry (30min)
- update_state_from_turn(): deterministic entity/slot extraction
  from user message + tool output + assistant response
- Detects: services (.service), cities (weather triggers + "and"
  split for comparisons), environments (staging/prod/dev)

Integration:
- handle_inbound_message.rs: updates state after each turn
- InboundMessagePorts: carries optional DialogueStateStore
- ChannelRuntimeContext: creates store at init

This fixes "and the second one?" / "restart it" / "which city?"
class of failures where the agent should resolve from session
context, not long-term memory.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@panviktor
panviktor merged commit 39dd9fe into main Apr 4, 2026
@panviktor
panviktor deleted the feat/dialogue-state-slice6 branch April 4, 2026 15:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant