personal memory agent

feat(convey): enrich chat read model for native ask clients master

Add three additive read-model fields so a native client can render an honest "ask sol" view without mirroring server copy or parsing journal layout client-side. All strictly additive — every existing field keeps its shape and meaning. - reduce_chat_state: owner-language `label` (verbatim talent_label_for, raw-name fallback) on active/completed talents, a new `errored_talents[]`, pass-through of `sources`/`answer_state` on latest_sol_message, and a top-level `chat_error` surfaced via newest-unsuperseded-by-sol_message. - New pure chat_sources.py: parse `sol://` refs (markdown + bare, de-duped first-seen) and resolve to relative loopback paths (timeline/news/ reflections; events + unknown -> url null). Stdlib only, no Flask. - chat.py: compute `sources`/`answer_state` at sol_message compose time in _on_cortex_finish and on the decline/confirm/cancel paths. answer_state maps off the existing exit_mode (answered / partial / failed). - Update the /api/chat/session baseline to the 6-key shape. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>