Merge remote-tracking branch 'origin/feat/search-presenter' into feat/web-search-card

# Conflicts:
#	packages/client/ui-conversation/src/client/chat/ToolRow.tsx
#	packages/client/ui-conversation/tests/chat-apply.spec.tsx
This commit is contained in:
Chinesezjc
2026-07-30 19:12:01 +08:00
447 changed files with 10452 additions and 4272 deletions

View File

@@ -80,13 +80,13 @@ describe('apply wiring', () => {
await b.runtime.dispose()
})
it('mounts the bash sample, the search row (grep + glob), and the todo row as keyed entries through the load-order seam', async () => {
it('mounts the bash sample, the search row (grep + glob), and the product rows as keyed entries through the load-order seam', async () => {
const b = await bench()
// All registrant plugins' inject: ['slots', 'conversation'] resolved — the
// Every registrant plugin's inject: ['slots', 'conversation'] resolved — the
// service being present implies the chat entry declared the hole first. The
// one search row registers under both grep and glob.
const entries = b.slots.entries('conversation.chat.toolview')
expect(entries.map(e => e.options.key)).toEqual(['bash', 'grep', 'glob', 'todo_write'])
expect(entries.map(e => e.options.key)).toEqual(['bash', 'grep', 'glob', 'todo_write', 'ask_user_question'])
// Stats stick with the composer (not inside ChatView).
expect(b.slots.entries('conversation.composer.dock').map(e => e.options.id)).toEqual(['stats'])
await b.runtime.dispose()