Files
reply-end-controls/core/state-model.md

50 lines
1.2 KiB
Markdown

# State Model
## Goal
Define the agent-neutral state model for reply-end controls.
This state should be reusable across multiple agents, while Telegram remains the first delivery channel.
## Core state
Suggested canonical structure:
```json
{
"replyEndControls": {
"lastChoice": "continue | stop",
"lastChoiceAt": "ISO timestamp",
"sourceMessageId": "string",
"sourceCallbackId": "string",
"active": true
}
}
```
## Field meanings
- `lastChoice`
- the latest explicit user choice
- `lastChoiceAt`
- when the choice was made
- `sourceMessageId`
- the assistant message whose buttons were clicked
- `sourceCallbackId`
- the callback event id from the channel
- `active`
- whether the latest state should still affect later assistant behavior
## Semantics
- `continue`
- the conversation should remain open to follow-up handling
- `stop`
- the conversation should be treated as closed unless the user explicitly types a new instruction
## Reset rules
- A new typed user message overrides prior button state.
- A later `continue` click overrides an earlier `stop` click.
- The system may optionally expire stale button state in a later version, but V1 does not require timeout expiry.