turn
EVERY TURN, ONE CALL: turn(user_message, draft) before the user sees the reply. Compact mode (compact=true): self-check first, send the final answer once as answer= (draft alias); saved+sealed, not echoed; missed_turns duty -> add recap=[{ref,user,answer}] to your next turn; facts max 3 x 200 chars; cubes/self_check only when changed (else cubes_version/checklist_version). The server does not judge your draft: it returns memory facts with [ev:id], relevant cubes and a self_check list - check the draft yourself; if you change it, call turn again (same user_message). Server checks only that every [ev:id] exists in your memory (else verdict=revise + invalid_ids, nothing saved), saves the turn and returns the seal: append it as the last line. No draft = context only. Memory missing or user says remember/вспомни: dig deeper first - memory_search by meaning and by keywords (lines=all, offset for older), memory_event for full text, memory_dig for L2/L1 summaries and episodes - only then say you do not remember.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| duty | No | ||
| draft | No | ||
| lines | No | ||
| query | No | ||
| recap | No | ||
| answer | No | ||
| compact | No | ||
| msg_ref | No | ||
| profile | No | ||
| verbose | No | ||
| critical | No | ||
| event_id | No | ||
| sensitive | No | ||
| task_done | No | ||
| l1_summary | No | ||
| l2_summary | No | ||
| session_id | No | mcp | |
| duty_reason | No | ||
| second_look | No | ||
| user_message | Yes | ||
| draft_summary | No | ||
| profile_review | No | ||
| source_event_ids | No |