44 lines
1.7 KiB
TypeScript
44 lines
1.7 KiB
TypeScript
/** Register the Tool call tree, details renderer, and built-in atomic views. */
|
|
import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client'
|
|
import type {} from '@deepseek-ai/dsh-client-ui-conversation/client'
|
|
import { ToolCallTree } from './tool/ToolCallTree.tsx'
|
|
import { ToolDetails } from './tool/ToolDetails.tsx'
|
|
import { CONVERSATION_NS as NS } from './locale.ts'
|
|
import { askQuestionToolview } from './tool/toolviews/ask-question-row.tsx'
|
|
import { bashToolviewSample } from './tool/toolviews/bash-sample.tsx'
|
|
import { fileMutationToolview } from './tool/toolviews/file-mutation-row.tsx'
|
|
import { readToolview } from './tool/toolviews/read-row.tsx'
|
|
import { searchToolview } from './tool/toolviews/search-row.tsx'
|
|
import { todoToolview } from './tool/toolviews/todo-row.tsx'
|
|
import { webToolview } from './tool/toolviews/web-row.tsx'
|
|
|
|
/** Required service: the slot registry that owns both Tool render seats. */
|
|
export const inject = ['slots']
|
|
|
|
/**
|
|
* Mount the whole-Tool renderers and built-in atomic Tool registrations.
|
|
* @param ctx - Client root context.
|
|
*/
|
|
export function apply(ctx: ClientContext): void {
|
|
ctx.slots.inject('conversation.chat.tool', () => ctx.slots.register({
|
|
name: 'conversation.chat.tool',
|
|
locale: NS,
|
|
children: {
|
|
'tool.call.toolview': { kind: 'keyed', scope: 'session' },
|
|
},
|
|
}, ToolCallTree))
|
|
|
|
ctx.slots.inject('conversation.details.tool', () => ctx.slots.register({
|
|
name: 'conversation.details.tool',
|
|
locale: NS,
|
|
}, ToolDetails))
|
|
|
|
ctx.plugin(bashToolviewSample)
|
|
ctx.plugin(readToolview)
|
|
ctx.plugin(fileMutationToolview)
|
|
ctx.plugin(searchToolview)
|
|
ctx.plugin(webToolview)
|
|
ctx.plugin(todoToolview)
|
|
ctx.plugin(askQuestionToolview)
|
|
}
|