feat(tui,gemini): implement verbose transfer and url image fetch
This commit is contained in:
@@ -51,6 +51,7 @@ export interface AppProps {
|
||||
hookEngine?: HookEngine;
|
||||
modelProviderConfigs?: Partial<Record<ModelProvider, ModelConfig>>;
|
||||
contextThresholdPct?: number;
|
||||
onTransfer?: (target: string) => string | void;
|
||||
onExit?: () => void;
|
||||
}
|
||||
|
||||
@@ -64,6 +65,7 @@ export function App({
|
||||
hookEngine,
|
||||
modelProviderConfigs,
|
||||
contextThresholdPct,
|
||||
onTransfer,
|
||||
onExit,
|
||||
}: AppProps): React.ReactElement {
|
||||
const { exit } = useApp();
|
||||
@@ -92,6 +94,9 @@ export function App({
|
||||
if (!agent) {return;}
|
||||
|
||||
const handleToolEvent = (event: ToolUseEvent) => {
|
||||
if (!verbose) {
|
||||
return;
|
||||
}
|
||||
if (event.type === 'start') {
|
||||
const label = formatToolName(event.tool);
|
||||
const argsStr = event.args ? ` (${formatToolArgs(event.args)})` : '';
|
||||
@@ -114,7 +119,7 @@ export function App({
|
||||
return () => {
|
||||
agent.setOnToolUse(undefined);
|
||||
};
|
||||
}, [agent]);
|
||||
}, [agent, verbose]);
|
||||
|
||||
// Inline confirmations for dangerous tools (e.g. shell.exec) in fullscreen mode.
|
||||
useEffect(() => {
|
||||
@@ -367,9 +372,18 @@ export function App({
|
||||
case 'fullscreen':
|
||||
return;
|
||||
|
||||
case 'transfer':
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: 'Transfer not supported in fullscreen mode.' })]);
|
||||
case 'transfer': {
|
||||
if (!onTransfer) {
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: 'Transfer target is not available in fullscreen mode.' })]);
|
||||
return;
|
||||
}
|
||||
const result = onTransfer(command.target);
|
||||
const content = typeof result === 'string' && result.trim()
|
||||
? result
|
||||
: `Transfer requested: ${command.target}`;
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content })]);
|
||||
return;
|
||||
}
|
||||
|
||||
case 'queue': {
|
||||
if (!command.action || command.action === 'show') {
|
||||
@@ -572,6 +586,7 @@ export function App({
|
||||
tokenUsage.inputTokens,
|
||||
tokenUsage.outputTokens,
|
||||
modelProviderConfigs,
|
||||
onTransfer,
|
||||
]);
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user