* fix(chat): keep live strategy continuations in their original task
* fix(chat): re-derive the task position when a reattach follows a successor Run
`reattachDaemonRun`'s `onRunCreated` re-points the row at the daemon-created
successor Run but spread the predecessor message, so a page reloaded mid-task
kept the predecessor's `strategyTaskRunIndex` on a row that is now streaming a
different Run. That position is what `foldStrategyTaskTurns`, the fork boundary
and the successor-absorption rule read.
Resolve it through the same `strategyTaskRunIndex(...)` helper the live send
path uses, so a projection that does not name this Run exactly once yields
`undefined` instead of the predecessor's index.
---------
Co-authored-by: lefarcen <935902669@qq.com>