upsert_attention_session
Emit or update thin session telemetry for THIS operator (host coding agent self-announce). Use when YOU are Grok or Claude Code at session start / status change so voice CoS can list_attention_sessions and target you. Prefer tiny goals; never dump transcripts.
[write-tier — first use may require a manager's approval; a from-now-on approval makes future calls seamless, a just-once approval re-asks next time.]
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Optional working directory | |
| goal | No | One-line goal | |
| host | No | claude-code | claude-desktop | grok | manual | slack | github | freedomos | other | |
| turns | No | Grok Bot only: append last user/bot lines (role you|bot, text ≤280). Server keeps the last 12. Omit to preserve. Never dump a full transcript. | |
| status | No | running | blocked_on_operator | done | parked | unknown (blocked_on_tim accepted as alias) | |
| project | No | Optional project name | |
| artifact | No | Ship-seat stamp when known (e.g. pr:1752). Local and FO spawns use the same field — origin does not matter. If omitted and goal names a PR, server may infer pr:N. | |
| priority | No | Optional priority (higher = sooner) | |
| companyId | No | FreedomOS company id to act within (you must be a member). Required for company-scoped tools. | |
| last_beat | No | Resume line — where this session left off, one sentence (≤240 chars). Voice CoS speaks it as "here's where we left off" so the operator never re-reads a transcript. Real content only, never bookkeeping text. | |
| company_id | No | Optional company id | |
| session_id | Yes | Stable session id (same string used as target_session_id for directives). | |
| ask_for_operator | No | If blocked: one sentence the operator must answer |