Add wait_for_response functionality to ToolResource and related components. Update API models, schemas, and routers to support new parameter. Enhance UI components to manage wait_for_response state, ensuring proper integration across the application.
This commit is contained in:
@@ -184,6 +184,7 @@ export const ToolLibraryPage: React.FC = () => {
|
||||
const [toolCategory, setToolCategory] = useState<'system' | 'query'>('system');
|
||||
const [toolIcon, setToolIcon] = useState('Wrench');
|
||||
const [toolEnabled, setToolEnabled] = useState(true);
|
||||
const [toolWaitForResponse, setToolWaitForResponse] = useState(false);
|
||||
const [toolHttpMethod, setToolHttpMethod] = useState<'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'>('GET');
|
||||
const [toolHttpUrl, setToolHttpUrl] = useState('');
|
||||
const [toolHttpHeadersText, setToolHttpHeadersText] = useState('{}');
|
||||
@@ -215,6 +216,7 @@ export const ToolLibraryPage: React.FC = () => {
|
||||
setToolCategory('system');
|
||||
setToolIcon('Wrench');
|
||||
setToolEnabled(true);
|
||||
setToolWaitForResponse(false);
|
||||
setToolHttpMethod('GET');
|
||||
setToolHttpUrl('');
|
||||
setToolHttpHeadersText('{}');
|
||||
@@ -231,6 +233,7 @@ export const ToolLibraryPage: React.FC = () => {
|
||||
setToolCategory(tool.category);
|
||||
setToolIcon(tool.icon || 'Wrench');
|
||||
setToolEnabled(tool.enabled ?? true);
|
||||
setToolWaitForResponse(Boolean(tool.waitForResponse));
|
||||
setToolHttpMethod((tool.httpMethod || 'GET') as 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE');
|
||||
setToolHttpUrl(tool.httpUrl || '');
|
||||
setToolHttpHeadersText(JSON.stringify(tool.httpHeaders || {}, null, 2));
|
||||
@@ -269,6 +272,15 @@ export const ToolLibraryPage: React.FC = () => {
|
||||
<Badge variant="outline" className={`text-[10px] border-0 px-0 ${tool.category === 'system' ? 'text-primary' : 'text-blue-400'}`}>
|
||||
{tool.category === 'system' ? 'SYSTEM' : 'QUERY'}
|
||||
</Badge>
|
||||
{tool.category === 'system' && (
|
||||
<Badge
|
||||
variant="outline"
|
||||
className={`text-[10px] h-4 px-1.5 border ${tool.waitForResponse ? 'border-amber-400/40 text-amber-300' : 'border-white/20 text-muted-foreground'}`}
|
||||
title={tool.waitForResponse ? 'wait for response: ON' : 'wait for response: OFF'}
|
||||
>
|
||||
{tool.waitForResponse ? 'WAIT' : 'NO-WAIT'}
|
||||
</Badge>
|
||||
)}
|
||||
<span className="text-[10px] text-muted-foreground font-mono opacity-50 truncate">ID: {tool.id}</span>
|
||||
</div>
|
||||
<p className="text-xs text-muted-foreground line-clamp-2 leading-relaxed opacity-80">{tool.description}</p>
|
||||
@@ -371,6 +383,7 @@ export const ToolLibraryPage: React.FC = () => {
|
||||
httpTimeoutMs: toolHttpTimeoutMs,
|
||||
parameterSchema: parsedParameterSchema,
|
||||
parameterDefaults: parsedParameterDefaults,
|
||||
waitForResponse: toolCategory === 'system' ? toolWaitForResponse : false,
|
||||
enabled: toolEnabled,
|
||||
});
|
||||
setTools((prev) => prev.map((item) => (item.id === updated.id ? updated : item)));
|
||||
@@ -387,6 +400,7 @@ export const ToolLibraryPage: React.FC = () => {
|
||||
httpTimeoutMs: toolHttpTimeoutMs,
|
||||
parameterSchema: parsedParameterSchema,
|
||||
parameterDefaults: parsedParameterDefaults,
|
||||
waitForResponse: toolCategory === 'system' ? toolWaitForResponse : false,
|
||||
enabled: toolEnabled,
|
||||
});
|
||||
setTools((prev) => [created, ...prev]);
|
||||
@@ -573,6 +587,22 @@ export const ToolLibraryPage: React.FC = () => {
|
||||
/>
|
||||
</div>
|
||||
|
||||
{toolCategory === 'system' && (
|
||||
<div className="rounded-md border border-white/10 bg-black/20 p-3 space-y-1.5">
|
||||
<label className="flex items-center gap-2 text-xs text-muted-foreground">
|
||||
<input
|
||||
type="checkbox"
|
||||
checked={toolWaitForResponse}
|
||||
onChange={(e) => setToolWaitForResponse(e.target.checked)}
|
||||
/>
|
||||
等待工具完成 (wait for response)
|
||||
</label>
|
||||
<p className="text-[11px] text-muted-foreground">
|
||||
勾选后,模型会在客户端工具回传结果后再继续回复;不勾选则可立即继续回复。
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
<div className="space-y-4 rounded-md border border-white/10 bg-white/5 p-3">
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="text-[10px] font-black uppercase tracking-widest text-emerald-300">Tool Parameters</div>
|
||||
|
||||
Reference in New Issue
Block a user