diff --git a/app/components/agent/AgentChatArea.vue b/app/components/agent/AgentChatArea.vue index 476fb65..9f43a92 100644 --- a/app/components/agent/AgentChatArea.vue +++ b/app/components/agent/AgentChatArea.vue @@ -16,6 +16,7 @@ const props = defineProps<{ modelId: number | null; models: ModelOption[]; enableTools: boolean; + toolsDisabled?: boolean; rateLimitInfo?: { sessionRemaining: number | null; ipRemaining: number | null; @@ -51,6 +52,11 @@ function handleEdit(messageId: string, content: string) { inputRef.value?.setText(content); } +function handleCancelEdit() { + editingMessageId.value = null; + inputRef.value?.setText(""); +} + function handleSend(content: string) { if (editingMessageId.value) { emit("edit", editingMessageId.value, content); @@ -108,9 +114,12 @@ watch( :disabled="rateLimitInfo?.sessionRemaining === 0 || hasPendingApproval" :disabled-reason="rateLimitInfo?.sessionRemaining === 0 ? 'rate-limit' : hasPendingApproval ? 'approval' : null" :enable-tools="enableTools" + :tools-disabled="toolsDisabled" :logged-in="loggedIn" + :editing="!!editingMessageId" @send="handleSend" @stop="emit('stop')" + @cancel-edit="handleCancelEdit" @update:enable-tools="emit('update:enableTools', $event)" /> diff --git a/app/components/agent/AgentInput.vue b/app/components/agent/AgentInput.vue index fd4faf8..34e5fe6 100644 --- a/app/components/agent/AgentInput.vue +++ b/app/components/agent/AgentInput.vue @@ -12,13 +12,16 @@ const props = defineProps<{ disabledReason?: "approval" | "rate-limit" | null; placeholder?: string; enableTools: boolean; + toolsDisabled?: boolean; loggedIn: boolean; + editing?: boolean; }>(); const emit = defineEmits<{ send: [content: string]; stop: []; "update:enableTools": [val: boolean]; + cancelEdit: []; }>(); const inputText = ref(""); @@ -77,6 +80,11 @@ function handleSend() { } function handleKeydown(e: KeyboardEvent) { + if (e.key === "Escape" && props.editing) { + e.preventDefault(); + emit("cancelEdit"); + return; + } if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); handleSend(); @@ -99,13 +107,26 @@ defineExpose({