### TL;DR
* Fix the issue of inaccurate content replacement in AI Replace Selection
* Optimize unit Tests utils
### What Changed
1. Fixed the issue of inaccurate content replacement in AI Replace Selection:
- Convert the AI Answer into a Snapshot, then transform it into a sequence of Blocks ready for insertion.
- Invoke the `replaceSelectedTextWithBlocks` command to replace the current selection with blocks (given the complexity of block combinations, this command uses [ts-pattern](https://github.com/gvergnaud/ts-pattern) implementation to ensure compile-time prevention of pattern handling omissions).
2. Optimized unit test assertions for commands, now allowing direct document content comparison using `toEqualDoc`.
```ts
const host = affine`
<affine-page id="page">
<affine-note id="note">
<affine-paragraph id="paragraph-1">Hel<anchor />lo</affine-paragraph>
<affine-paragraph id="paragraph-2">Wor<focus />ld</affine-paragraph>
</affine-note>
</affine-page>
`;
// ....
const expected = affine`
<affine-page id="page">
<affine-note id="note">
<affine-paragraph id="paragraph-1">Hel111</affine-paragraph>
<affine-code id="code"></affine-code>
<affine-paragraph id="paragraph-2">222ld</affine-paragraph>
</affine-note>
</affine-page>
`;
expect(host.doc).toEqualDoc(expected.doc);
```
3. Added support for text cursors in unit test template syntax.
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit
> CLOSE BS-3278
- **New Features**
- Introduced the ability to replace selected text in documents with blocks, supporting advanced merging and insertion scenarios for various block types.
- **Bug Fixes**
- Improved handling of text selection and cursor placement in document templates used for testing.
- **Tests**
- Added comprehensive tests for replacing selected text with blocks, including edge cases and complex selection scenarios.
- Enhanced test utilities for document structure comparison and selection handling.
- Updated end-to-end tests to verify correct replacement of selected text via AI-driven actions.
- **Chores**
- Added and updated dependencies to support new features.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->