feat(ui): support question tool requests
Add question queue hydration, inline answering UI, and unify pending requests with permissions.
This commit is contained in:
@@ -9,6 +9,7 @@ import { todoRenderer } from "./todo"
|
||||
import { webfetchRenderer } from "./webfetch"
|
||||
import { writeRenderer } from "./write"
|
||||
import { invalidRenderer } from "./invalid"
|
||||
import { questionRenderer } from "./question"
|
||||
|
||||
const TOOL_RENDERERS: ToolRenderer[] = [
|
||||
bashRenderer,
|
||||
@@ -19,6 +20,7 @@ const TOOL_RENDERERS: ToolRenderer[] = [
|
||||
webfetchRenderer,
|
||||
todoRenderer,
|
||||
taskRenderer,
|
||||
questionRenderer,
|
||||
invalidRenderer,
|
||||
]
|
||||
|
||||
|
||||
17
packages/ui/src/components/tool-call/renderers/question.tsx
Normal file
17
packages/ui/src/components/tool-call/renderers/question.tsx
Normal file
@@ -0,0 +1,17 @@
|
||||
import type { ToolRenderer } from "../types"
|
||||
|
||||
export const questionRenderer: ToolRenderer = {
|
||||
tools: ["question"],
|
||||
getAction: () => "Awaiting answers...",
|
||||
getTitle({ toolState }) {
|
||||
const state = toolState()
|
||||
if (!state) return "Questions"
|
||||
if (state.status === "completed") return "Questions"
|
||||
return "Asking questions"
|
||||
},
|
||||
renderBody() {
|
||||
// The question tool UI is rendered by ToolCall itself so
|
||||
// it can share the same layout for pending/completed.
|
||||
return null
|
||||
},
|
||||
}
|
||||
@@ -45,6 +45,8 @@ export function getToolIcon(tool: string): string {
|
||||
case "todowrite":
|
||||
case "todoread":
|
||||
return "📋"
|
||||
case "question":
|
||||
return "❓"
|
||||
case "list":
|
||||
return "📁"
|
||||
case "patch":
|
||||
|
||||
Reference in New Issue
Block a user